mirror of
https://github.com/roytam1/UXP.git
synced 2026-05-26 14:39:05 +00:00
Merge remote-tracking branch 'origin/tracking' into custom
This commit is contained in:
Vendored
+1
-1
@@ -30,7 +30,7 @@ if CONFIG['MOZ_WEBM_ENCODER']:
|
||||
external_dirs += ['media/libvpx']
|
||||
|
||||
if CONFIG['MOZ_AV1']:
|
||||
external_dirs += ['media/libaom']
|
||||
external_dirs += ['media/libdav1d']
|
||||
|
||||
external_dirs += ['media/libpng']
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ private:
|
||||
DECL_MEDIA_PREF("media.ffmpeg.skip_loop_filter", FFmpegSkipLoopFilter, bool, false);
|
||||
#endif
|
||||
#ifdef MOZ_AV1
|
||||
DECL_MEDIA_PREF("media.av1.enabled", AV1Enabled, bool, false);
|
||||
DECL_MEDIA_PREF("media.av1.enabled", AV1Enabled, bool, true);
|
||||
#endif
|
||||
#ifdef XP_WIN
|
||||
DECL_MEDIA_PREF("media.wmf.enabled", PDMWMFEnabled, bool, true);
|
||||
|
||||
@@ -1,348 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "AOMDecoder.h"
|
||||
#include "MediaResult.h"
|
||||
#include "TimeUnits.h"
|
||||
#include "aom/aomdx.h"
|
||||
#include "aom/aom_image.h"
|
||||
#include "gfx2DGlue.h"
|
||||
#include "mozilla/PodOperations.h"
|
||||
#include "mozilla/SyncRunnable.h"
|
||||
#include "nsError.h"
|
||||
#include "prsystem.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#undef LOG
|
||||
#define LOG(arg, ...) MOZ_LOG(sPDMLog, mozilla::LogLevel::Debug, ("AOMDecoder(%p)::%s: " arg, this, __func__, ##__VA_ARGS__))
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
using namespace gfx;
|
||||
using namespace layers;
|
||||
|
||||
AOMDecoder::AOMDecoder(const CreateDecoderParams& aParams)
|
||||
: mImageContainer(aParams.mImageContainer)
|
||||
, mTaskQueue(aParams.mTaskQueue)
|
||||
, mCallback(aParams.mCallback)
|
||||
, mIsFlushing(false)
|
||||
, mInfo(aParams.VideoConfig())
|
||||
{
|
||||
PodZero(&mCodec);
|
||||
}
|
||||
|
||||
AOMDecoder::~AOMDecoder()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
AOMDecoder::Shutdown()
|
||||
{
|
||||
aom_codec_destroy(&mCodec);
|
||||
}
|
||||
|
||||
RefPtr<MediaDataDecoder::InitPromise>
|
||||
AOMDecoder::Init()
|
||||
{
|
||||
int decode_threads = 2;
|
||||
|
||||
aom_codec_iface_t* dx = aom_codec_av1_dx();
|
||||
if (mInfo.mDisplay.width >= 2048) {
|
||||
decode_threads = 8;
|
||||
}
|
||||
else if (mInfo.mDisplay.width >= 1024) {
|
||||
decode_threads = 4;
|
||||
}
|
||||
decode_threads = std::min(decode_threads, PR_GetNumberOfProcessors());
|
||||
|
||||
aom_codec_dec_cfg_t config;
|
||||
PodZero(&config);
|
||||
config.threads = decode_threads;
|
||||
config.w = config.h = 0; // set after decode
|
||||
config.allow_lowbitdepth = true;
|
||||
|
||||
aom_codec_flags_t flags = 0;
|
||||
|
||||
if (!dx || aom_codec_dec_init(&mCodec, dx, &config, flags)) {
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
return InitPromise::CreateAndResolve(TrackInfo::kVideoTrack, __func__);
|
||||
}
|
||||
|
||||
void
|
||||
AOMDecoder::Flush()
|
||||
{
|
||||
MOZ_ASSERT(mCallback->OnReaderTaskQueue());
|
||||
mIsFlushing = true;
|
||||
nsCOMPtr<nsIRunnable> r = NS_NewRunnableFunction([this] () {
|
||||
// nothing to do for now.
|
||||
});
|
||||
SyncRunnable::DispatchToThread(mTaskQueue, r);
|
||||
mIsFlushing = false;
|
||||
}
|
||||
|
||||
// Ported from third_party/aom/tools_common.c.
|
||||
static aom_codec_err_t
|
||||
highbd_img_downshift(aom_image_t *dst, aom_image_t *src, int down_shift) {
|
||||
int plane;
|
||||
if (dst->d_w != src->d_w || dst->d_h != src->d_h)
|
||||
return AOM_CODEC_INVALID_PARAM;
|
||||
if (dst->x_chroma_shift != src->x_chroma_shift)
|
||||
return AOM_CODEC_INVALID_PARAM;
|
||||
if (dst->y_chroma_shift != src->y_chroma_shift)
|
||||
return AOM_CODEC_INVALID_PARAM;
|
||||
if (dst->fmt != (src->fmt & ~AOM_IMG_FMT_HIGHBITDEPTH))
|
||||
return AOM_CODEC_INVALID_PARAM;
|
||||
if (down_shift < 0)
|
||||
return AOM_CODEC_INVALID_PARAM;
|
||||
switch (dst->fmt) {
|
||||
case AOM_IMG_FMT_I420:
|
||||
case AOM_IMG_FMT_I422:
|
||||
case AOM_IMG_FMT_I444:
|
||||
break;
|
||||
default:
|
||||
return AOM_CODEC_INVALID_PARAM;
|
||||
}
|
||||
switch (src->fmt) {
|
||||
case AOM_IMG_FMT_I42016:
|
||||
case AOM_IMG_FMT_I42216:
|
||||
case AOM_IMG_FMT_I44416:
|
||||
break;
|
||||
default:
|
||||
// We don't support anything that's not 16 bit
|
||||
return AOM_CODEC_UNSUP_BITSTREAM;
|
||||
}
|
||||
for (plane = 0; plane < 3; plane++) {
|
||||
int w = src->d_w;
|
||||
int h = src->d_h;
|
||||
int x, y;
|
||||
if (plane) {
|
||||
w = (w + src->x_chroma_shift) >> src->x_chroma_shift;
|
||||
h = (h + src->y_chroma_shift) >> src->y_chroma_shift;
|
||||
}
|
||||
for (y = 0; y < h; y++) {
|
||||
uint16_t *p_src =
|
||||
(uint16_t *)(src->planes[plane] + y * src->stride[plane]);
|
||||
uint8_t *p_dst =
|
||||
dst->planes[plane] + y * dst->stride[plane];
|
||||
for (x = 0; x < w; x++) *p_dst++ = (*p_src++ >> down_shift) & 0xFF;
|
||||
}
|
||||
}
|
||||
return AOM_CODEC_OK;
|
||||
}
|
||||
|
||||
// UniquePtr dtor wrapper for aom_image_t.
|
||||
struct AomImageFree {
|
||||
void operator()(aom_image_t* img) { aom_img_free(img); }
|
||||
};
|
||||
|
||||
MediaResult
|
||||
AOMDecoder::DoDecode(MediaRawData* aSample)
|
||||
{
|
||||
MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
|
||||
|
||||
#if defined(DEBUG)
|
||||
NS_ASSERTION(IsKeyframe(*aSample) == aSample->mKeyframe,
|
||||
"AOM Decode Keyframe error sample->mKeyframe and si.si_kf out of sync");
|
||||
#endif
|
||||
|
||||
if (aom_codec_err_t r = aom_codec_decode(&mCodec, aSample->Data(), aSample->Size(), nullptr)) {
|
||||
LOG("AOM Decode error: %s", aom_codec_err_to_string(r));
|
||||
return MediaResult(
|
||||
NS_ERROR_DOM_MEDIA_DECODE_ERR,
|
||||
RESULT_DETAIL("AOM error decoding AV1 sample: %s", aom_codec_err_to_string(r)));
|
||||
}
|
||||
|
||||
aom_codec_iter_t iter = nullptr;
|
||||
aom_image_t *img;
|
||||
UniquePtr<aom_image_t, AomImageFree> img8;
|
||||
|
||||
while ((img = aom_codec_get_frame(&mCodec, &iter))) {
|
||||
// Track whether the underlying buffer is 8 or 16 bits per channel.
|
||||
bool highbd = bool(img->fmt & AOM_IMG_FMT_HIGHBITDEPTH);
|
||||
if (highbd) {
|
||||
// Downsample images with more than 8 bits per channel.
|
||||
aom_img_fmt_t fmt8 = static_cast<aom_img_fmt_t>(img->fmt ^ AOM_IMG_FMT_HIGHBITDEPTH);
|
||||
img8.reset(aom_img_alloc(NULL, fmt8, img->d_w, img->d_h, 16));
|
||||
if (img8 == nullptr) {
|
||||
LOG("Couldn't allocate bitdepth reduction target!");
|
||||
return MediaResult(
|
||||
NS_ERROR_OUT_OF_MEMORY,
|
||||
RESULT_DETAIL("Couldn't allocate conversion buffer for AV1 frame"));
|
||||
}
|
||||
if (aom_codec_err_t r = highbd_img_downshift(img8.get(), img, img->bit_depth - 8)) {
|
||||
return MediaResult(
|
||||
NS_ERROR_DOM_MEDIA_DECODE_ERR,
|
||||
RESULT_DETAIL("Error converting AV1 frame to 8 bits: %s",
|
||||
aom_codec_err_to_string(r)));
|
||||
}
|
||||
// img normally points to storage owned by mCodec, so it is not freed.
|
||||
// To copy out the contents of img8 we can overwrite img with an alias.
|
||||
// Since img is assigned at the start of the while loop and img8 is held
|
||||
// outside that loop, the alias won't outlive the storage it points to.
|
||||
img = img8.get();
|
||||
highbd = false;
|
||||
}
|
||||
|
||||
NS_ASSERTION(img->fmt == AOM_IMG_FMT_I420 ||
|
||||
img->fmt == AOM_IMG_FMT_I42016 ||
|
||||
img->fmt == AOM_IMG_FMT_I444 ||
|
||||
img->fmt == AOM_IMG_FMT_I44416,
|
||||
"AV1 image format not I420 or I444");
|
||||
|
||||
// Chroma shifts are rounded down as per the decoding examples in the SDK
|
||||
VideoData::YCbCrBuffer b;
|
||||
b.mPlanes[0].mData = img->planes[0];
|
||||
b.mPlanes[0].mStride = img->stride[0];
|
||||
b.mPlanes[0].mHeight = img->d_h;
|
||||
b.mPlanes[0].mWidth = img->d_w;
|
||||
b.mPlanes[0].mOffset = 0;
|
||||
b.mPlanes[0].mSkip = highbd ? 1 : 0;
|
||||
|
||||
b.mPlanes[1].mData = img->planes[1];
|
||||
b.mPlanes[1].mStride = img->stride[1];
|
||||
b.mPlanes[1].mOffset = 0;
|
||||
b.mPlanes[1].mSkip = highbd ? 1 : 0;
|
||||
|
||||
b.mPlanes[2].mData = img->planes[2];
|
||||
b.mPlanes[2].mStride = img->stride[2];
|
||||
b.mPlanes[2].mOffset = 0;
|
||||
b.mPlanes[2].mSkip = highbd ? 1 : 0;
|
||||
|
||||
if (img->fmt == AOM_IMG_FMT_I420 ||
|
||||
img->fmt == AOM_IMG_FMT_I42016) {
|
||||
b.mPlanes[1].mHeight = (img->d_h + 1) >> img->y_chroma_shift;
|
||||
b.mPlanes[1].mWidth = (img->d_w + 1) >> img->x_chroma_shift;
|
||||
|
||||
b.mPlanes[2].mHeight = (img->d_h + 1) >> img->y_chroma_shift;
|
||||
b.mPlanes[2].mWidth = (img->d_w + 1) >> img->x_chroma_shift;
|
||||
} else if (img->fmt == AOM_IMG_FMT_I444) {
|
||||
b.mPlanes[1].mHeight = img->d_h;
|
||||
b.mPlanes[1].mWidth = img->d_w;
|
||||
|
||||
b.mPlanes[2].mHeight = img->d_h;
|
||||
b.mPlanes[2].mWidth = img->d_w;
|
||||
} else {
|
||||
LOG("AOM Unknown image format");
|
||||
return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR,
|
||||
RESULT_DETAIL("AOM Unknown image format"));
|
||||
}
|
||||
|
||||
switch (img->mc) {
|
||||
case AOM_CICP_MC_BT_601:
|
||||
b.mYUVColorSpace = YUVColorSpace::BT601;
|
||||
break;
|
||||
case AOM_CICP_MC_BT_709:
|
||||
b.mYUVColorSpace = YUVColorSpace::BT709;
|
||||
break;
|
||||
case AOM_CICP_MC_IDENTITY:
|
||||
b.mYUVColorSpace = YUVColorSpace::IDENTITY;
|
||||
break;
|
||||
default:
|
||||
LOG("Unhandled colorspace %d", img->mc);
|
||||
break;
|
||||
}
|
||||
b.mColorRange = img->range == AOM_CR_FULL_RANGE ? ColorRange::FULL
|
||||
: ColorRange::LIMITED;
|
||||
|
||||
RefPtr<VideoData> v =
|
||||
VideoData::CreateAndCopyData(mInfo,
|
||||
mImageContainer,
|
||||
aSample->mOffset,
|
||||
aSample->mTime,
|
||||
aSample->mDuration,
|
||||
b,
|
||||
aSample->mKeyframe,
|
||||
aSample->mTimecode,
|
||||
mInfo.ScaledImageRect(img->d_w,
|
||||
img->d_h));
|
||||
|
||||
if (!v) {
|
||||
LOG("Image allocation error source %ux%u display %ux%u picture %ux%u",
|
||||
img->d_w, img->d_h, mInfo.mDisplay.width, mInfo.mDisplay.height,
|
||||
mInfo.mImage.width, mInfo.mImage.height);
|
||||
return MediaResult(NS_ERROR_OUT_OF_MEMORY, __func__);
|
||||
}
|
||||
mCallback->Output(v);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
AOMDecoder::ProcessDecode(MediaRawData* aSample)
|
||||
{
|
||||
MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
|
||||
if (mIsFlushing) {
|
||||
return;
|
||||
}
|
||||
MediaResult rv = DoDecode(aSample);
|
||||
if (NS_FAILED(rv)) {
|
||||
mCallback->Error(rv);
|
||||
} else {
|
||||
mCallback->InputExhausted();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
AOMDecoder::Input(MediaRawData* aSample)
|
||||
{
|
||||
MOZ_ASSERT(mCallback->OnReaderTaskQueue());
|
||||
mTaskQueue->Dispatch(NewRunnableMethod<RefPtr<MediaRawData>>(
|
||||
this, &AOMDecoder::ProcessDecode, aSample));
|
||||
}
|
||||
|
||||
void
|
||||
AOMDecoder::ProcessDrain()
|
||||
{
|
||||
MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
|
||||
mCallback->DrainComplete();
|
||||
}
|
||||
|
||||
void
|
||||
AOMDecoder::Drain()
|
||||
{
|
||||
MOZ_ASSERT(mCallback->OnReaderTaskQueue());
|
||||
mTaskQueue->Dispatch(NewRunnableMethod(this, &AOMDecoder::ProcessDrain));
|
||||
}
|
||||
|
||||
/* static */
|
||||
bool
|
||||
AOMDecoder::IsAV1(const nsACString& aMimeType)
|
||||
{
|
||||
return aMimeType.EqualsLiteral("video/webm; codecs=av1") ||
|
||||
aMimeType.EqualsLiteral("video/av1");
|
||||
}
|
||||
|
||||
/* static */
|
||||
bool
|
||||
AOMDecoder::IsKeyframe(Span<const uint8_t> aBuffer) {
|
||||
aom_codec_stream_info_t info;
|
||||
PodZero(&info);
|
||||
|
||||
aom_codec_peek_stream_info(aom_codec_av1_dx(),
|
||||
aBuffer.Elements(),
|
||||
aBuffer.Length(),
|
||||
&info);
|
||||
|
||||
return bool(info.is_kf);
|
||||
}
|
||||
|
||||
/* static */
|
||||
nsIntSize
|
||||
AOMDecoder::GetFrameSize(Span<const uint8_t> aBuffer) {
|
||||
aom_codec_stream_info_t info;
|
||||
PodZero(&info);
|
||||
|
||||
aom_codec_peek_stream_info(aom_codec_av1_dx(),
|
||||
aBuffer.Elements(),
|
||||
aBuffer.Length(),
|
||||
&info);
|
||||
|
||||
return nsIntSize(info.w, info.h);
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
#undef LOG
|
||||
@@ -1,61 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#if !defined(AOMDecoder_h_)
|
||||
#define AOMDecoder_h_
|
||||
|
||||
#include "PlatformDecoderModule.h"
|
||||
#include "mozilla/Span.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include "aom/aom_decoder.h"
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
class AOMDecoder : public MediaDataDecoder
|
||||
{
|
||||
public:
|
||||
explicit AOMDecoder(const CreateDecoderParams& aParams);
|
||||
|
||||
RefPtr<InitPromise> Init() override;
|
||||
void Input(MediaRawData* aSample) override;
|
||||
void Flush() override;
|
||||
void Drain() override;
|
||||
void Shutdown() override;
|
||||
const char* GetDescriptionName() const override
|
||||
{
|
||||
return "libaom (AV1) video decoder";
|
||||
}
|
||||
|
||||
// Return true if aMimeType is a one of the strings used
|
||||
// by our demuxers to identify AV1 streams.
|
||||
static bool IsAV1(const nsACString& aMimeType);
|
||||
|
||||
// Return true if a sample is a keyframe.
|
||||
static bool IsKeyframe(Span<const uint8_t> aBuffer);
|
||||
|
||||
// Return the frame dimensions for a sample.
|
||||
static nsIntSize GetFrameSize(Span<const uint8_t> aBuffer);
|
||||
|
||||
private:
|
||||
~AOMDecoder();
|
||||
void ProcessDecode(MediaRawData* aSample);
|
||||
MediaResult DoDecode(MediaRawData* aSample);
|
||||
void ProcessDrain();
|
||||
|
||||
const RefPtr<layers::ImageContainer> mImageContainer;
|
||||
const RefPtr<TaskQueue> mTaskQueue;
|
||||
MediaDataDecoderCallback* mCallback;
|
||||
Atomic<bool> mIsFlushing;
|
||||
|
||||
// AOM decoder state
|
||||
aom_codec_ctx_t mCodec;
|
||||
|
||||
const VideoInfo& mInfo;
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
#endif // AOMDecoder_h_
|
||||
@@ -13,7 +13,7 @@
|
||||
#include "TheoraDecoder.h"
|
||||
|
||||
#ifdef MOZ_AV1
|
||||
#include "AOMDecoder.h"
|
||||
#include "Dav1dDecoder.h"
|
||||
#endif
|
||||
|
||||
namespace mozilla {
|
||||
@@ -30,7 +30,7 @@ AgnosticDecoderModule::SupportsMimeType(const nsACString& aMimeType,
|
||||
TheoraDecoder::IsTheora(aMimeType);
|
||||
#ifdef MOZ_AV1
|
||||
if (MediaPrefs::AV1Enabled()) {
|
||||
supports |= AOMDecoder::IsAV1(aMimeType);
|
||||
supports |= Dav1dDecoder::IsAV1(aMimeType);
|
||||
}
|
||||
#endif
|
||||
MOZ_LOG(sPDMLog, LogLevel::Debug, ("Agnostic decoder %s requested type",
|
||||
@@ -47,9 +47,9 @@ AgnosticDecoderModule::CreateVideoDecoder(const CreateDecoderParams& aParams)
|
||||
m = new VPXDecoder(aParams);
|
||||
}
|
||||
#ifdef MOZ_AV1
|
||||
else if (AOMDecoder::IsAV1(aParams.mConfig.mMimeType) &&
|
||||
else if (Dav1dDecoder::IsAV1(aParams.mConfig.mMimeType) &&
|
||||
MediaPrefs::AV1Enabled()) {
|
||||
m = new AOMDecoder(aParams);
|
||||
m = new Dav1dDecoder(aParams);
|
||||
}
|
||||
#endif
|
||||
else if (TheoraDecoder::IsTheora(aParams.mConfig.mMimeType)) {
|
||||
|
||||
@@ -0,0 +1,376 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "Dav1dDecoder.h"
|
||||
#include "MediaResult.h"
|
||||
#include "TimeUnits.h"
|
||||
#include "dav1d/dav1d.h"
|
||||
#include "mozilla/CheckedInt.h"
|
||||
#include "mozilla/PodOperations.h"
|
||||
#include "mozilla/SyncRunnable.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
#include "mozilla/UniquePtrExtensions.h"
|
||||
#include "nsError.h"
|
||||
#include "prsystem.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
|
||||
#undef LOG
|
||||
#define LOG(arg, ...) MOZ_LOG(sPDMLog, mozilla::LogLevel::Debug, ("Dav1dDecoder(%p)::%s: " arg, this, __func__, ##__VA_ARGS__))
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
using namespace gfx;
|
||||
using namespace layers;
|
||||
|
||||
Dav1dDecoder::Dav1dDecoder(const CreateDecoderParams& aParams)
|
||||
: mImageContainer(aParams.mImageContainer)
|
||||
, mTaskQueue(aParams.mTaskQueue)
|
||||
, mCallback(aParams.mCallback)
|
||||
, mIsFlushing(false)
|
||||
, mDecoder(nullptr)
|
||||
, mInfo(aParams.VideoConfig())
|
||||
{
|
||||
}
|
||||
|
||||
Dav1dDecoder::~Dav1dDecoder()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
Dav1dDecoder::Shutdown()
|
||||
{
|
||||
if (mDecoder) {
|
||||
dav1d_close(&mDecoder);
|
||||
}
|
||||
}
|
||||
|
||||
RefPtr<MediaDataDecoder::InitPromise>
|
||||
Dav1dDecoder::Init()
|
||||
{
|
||||
int decodeThreads = 2;
|
||||
if (mInfo.mDisplay.width >= 2048) {
|
||||
decodeThreads = 8;
|
||||
} else if (mInfo.mDisplay.width >= 1024) {
|
||||
decodeThreads = 4;
|
||||
}
|
||||
decodeThreads = std::min(decodeThreads, PR_GetNumberOfProcessors());
|
||||
|
||||
Dav1dSettings settings;
|
||||
dav1d_default_settings(&settings);
|
||||
settings.n_threads = decodeThreads;
|
||||
settings.logger.callback = nullptr;
|
||||
|
||||
if (dav1d_open(&mDecoder, &settings) < 0) {
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
return InitPromise::CreateAndResolve(TrackInfo::kVideoTrack, __func__);
|
||||
}
|
||||
|
||||
void
|
||||
Dav1dDecoder::Flush()
|
||||
{
|
||||
MOZ_ASSERT(mCallback->OnReaderTaskQueue());
|
||||
mIsFlushing = true;
|
||||
nsCOMPtr<nsIRunnable> r = NS_NewRunnableFunction([this] () {
|
||||
if (mDecoder) {
|
||||
dav1d_flush(mDecoder);
|
||||
}
|
||||
});
|
||||
SyncRunnable::DispatchToThread(mTaskQueue, r);
|
||||
mIsFlushing = false;
|
||||
}
|
||||
|
||||
static bool
|
||||
GetPlaneSize(int aWidth, int aHeight, size_t* aSize)
|
||||
{
|
||||
CheckedInt<size_t> size = aWidth;
|
||||
size *= aHeight;
|
||||
if (!size.isValid()) {
|
||||
return false;
|
||||
}
|
||||
*aSize = size.value();
|
||||
return true;
|
||||
}
|
||||
|
||||
static void
|
||||
DownshiftPlane(uint8_t* aDst, int aDstStride, const uint8_t* aSrc,
|
||||
ptrdiff_t aSrcStride, int aWidth, int aHeight, int aShift)
|
||||
{
|
||||
for (int y = 0; y < aHeight; y++) {
|
||||
const uint16_t* src =
|
||||
reinterpret_cast<const uint16_t*>(aSrc + y * aSrcStride);
|
||||
uint8_t* dst = aDst + y * aDstStride;
|
||||
for (int x = 0; x < aWidth; x++) {
|
||||
dst[x] = (src[x] >> aShift) & 0xff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MediaResult
|
||||
Dav1dDecoder::OutputPicture(const Dav1dPicture& aPicture)
|
||||
{
|
||||
const int width = aPicture.p.w;
|
||||
const int height = aPicture.p.h;
|
||||
if (width <= 0 || height <= 0) {
|
||||
return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR,
|
||||
RESULT_DETAIL("dav1d returned invalid AV1 picture size"));
|
||||
}
|
||||
|
||||
int chromaWidth = width;
|
||||
int chromaHeight = height;
|
||||
switch (aPicture.p.layout) {
|
||||
case DAV1D_PIXEL_LAYOUT_I420:
|
||||
chromaWidth = (width + 1) >> 1;
|
||||
chromaHeight = (height + 1) >> 1;
|
||||
break;
|
||||
case DAV1D_PIXEL_LAYOUT_I422:
|
||||
chromaWidth = (width + 1) >> 1;
|
||||
chromaHeight = height;
|
||||
break;
|
||||
case DAV1D_PIXEL_LAYOUT_I444:
|
||||
break;
|
||||
default:
|
||||
return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR,
|
||||
RESULT_DETAIL("dav1d returned unsupported AV1 pixel layout: %d",
|
||||
int(aPicture.p.layout)));
|
||||
}
|
||||
|
||||
const int planeWidths[3] = { width, chromaWidth, chromaWidth };
|
||||
const int planeHeights[3] = { height, chromaHeight, chromaHeight };
|
||||
const ptrdiff_t srcStrides[3] = {
|
||||
aPicture.stride[0],
|
||||
aPicture.stride[1],
|
||||
aPicture.stride[1]
|
||||
};
|
||||
uint8_t* planeData[3] = {
|
||||
static_cast<uint8_t*>(aPicture.data[0]),
|
||||
static_cast<uint8_t*>(aPicture.data[1]),
|
||||
static_cast<uint8_t*>(aPicture.data[2])
|
||||
};
|
||||
uint32_t planeStrides[3] = { 0, 0, 0 };
|
||||
UniquePtr<uint8_t[]> downshifted[3];
|
||||
|
||||
if (aPicture.p.bpc > 8) {
|
||||
const int shift = aPicture.p.bpc - 8;
|
||||
for (int plane = 0; plane < 3; plane++) {
|
||||
size_t planeSize;
|
||||
if (!GetPlaneSize(planeWidths[plane], planeHeights[plane], &planeSize)) {
|
||||
return MediaResult(NS_ERROR_OUT_OF_MEMORY,
|
||||
RESULT_DETAIL("AV1 downshift plane size overflow"));
|
||||
}
|
||||
downshifted[plane] = MakeUniqueFallible<uint8_t[]>(planeSize);
|
||||
if (!downshifted[plane]) {
|
||||
return MediaResult(NS_ERROR_OUT_OF_MEMORY,
|
||||
RESULT_DETAIL("Couldn't allocate AV1 conversion buffer"));
|
||||
}
|
||||
DownshiftPlane(downshifted[plane].get(), planeWidths[plane],
|
||||
planeData[plane], srcStrides[plane],
|
||||
planeWidths[plane], planeHeights[plane], shift);
|
||||
planeData[plane] = downshifted[plane].get();
|
||||
planeStrides[plane] = planeWidths[plane];
|
||||
}
|
||||
} else {
|
||||
for (int plane = 0; plane < 3; plane++) {
|
||||
CheckedInt<uint32_t> stride(srcStrides[plane]);
|
||||
if (srcStrides[plane] < 0 || !stride.isValid()) {
|
||||
return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR,
|
||||
RESULT_DETAIL("dav1d returned invalid AV1 stride"));
|
||||
}
|
||||
planeStrides[plane] = stride.value();
|
||||
}
|
||||
}
|
||||
|
||||
VideoData::YCbCrBuffer b;
|
||||
for (int plane = 0; plane < 3; plane++) {
|
||||
b.mPlanes[plane].mData = planeData[plane];
|
||||
b.mPlanes[plane].mStride = planeStrides[plane];
|
||||
b.mPlanes[plane].mHeight = planeHeights[plane];
|
||||
b.mPlanes[plane].mWidth = planeWidths[plane];
|
||||
b.mPlanes[plane].mOffset = 0;
|
||||
b.mPlanes[plane].mSkip = 0;
|
||||
}
|
||||
|
||||
if (aPicture.seq_hdr) {
|
||||
switch (aPicture.seq_hdr->mtrx) {
|
||||
case DAV1D_MC_BT601:
|
||||
case DAV1D_MC_BT470BG:
|
||||
b.mYUVColorSpace = YUVColorSpace::BT601;
|
||||
break;
|
||||
case DAV1D_MC_BT709:
|
||||
b.mYUVColorSpace = YUVColorSpace::BT709;
|
||||
break;
|
||||
case DAV1D_MC_IDENTITY:
|
||||
b.mYUVColorSpace = YUVColorSpace::IDENTITY;
|
||||
break;
|
||||
default:
|
||||
LOG("Unhandled colorspace %d", aPicture.seq_hdr->mtrx);
|
||||
break;
|
||||
}
|
||||
b.mColorRange = aPicture.seq_hdr->color_range ? ColorRange::FULL
|
||||
: ColorRange::LIMITED;
|
||||
}
|
||||
|
||||
const int64_t time =
|
||||
aPicture.m.timestamp == INT64_MIN ? 0 : aPicture.m.timestamp;
|
||||
const int64_t duration = aPicture.m.duration;
|
||||
const int64_t offset = aPicture.m.offset;
|
||||
const bool keyframe =
|
||||
aPicture.frame_hdr &&
|
||||
aPicture.frame_hdr->frame_type == DAV1D_FRAME_TYPE_KEY;
|
||||
|
||||
RefPtr<VideoData> v =
|
||||
VideoData::CreateAndCopyData(mInfo,
|
||||
mImageContainer,
|
||||
offset,
|
||||
time,
|
||||
duration,
|
||||
b,
|
||||
keyframe,
|
||||
time,
|
||||
mInfo.ScaledImageRect(width, height));
|
||||
|
||||
if (!v) {
|
||||
LOG("Image allocation error source %dx%d display %ux%u picture %ux%u",
|
||||
width, height, mInfo.mDisplay.width, mInfo.mDisplay.height,
|
||||
mInfo.mImage.width, mInfo.mImage.height);
|
||||
return MediaResult(NS_ERROR_OUT_OF_MEMORY, __func__);
|
||||
}
|
||||
mCallback->Output(v);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
MediaResult
|
||||
Dav1dDecoder::DrainOutput()
|
||||
{
|
||||
while (true) {
|
||||
Dav1dPicture picture;
|
||||
PodZero(&picture);
|
||||
const int res = dav1d_get_picture(mDecoder, &picture);
|
||||
if (res == DAV1D_ERR(EAGAIN)) {
|
||||
return NS_OK;
|
||||
}
|
||||
if (res < 0) {
|
||||
return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR,
|
||||
RESULT_DETAIL("dav1d error getting AV1 picture: %d",
|
||||
res));
|
||||
}
|
||||
|
||||
MediaResult rv = OutputPicture(picture);
|
||||
dav1d_picture_unref(&picture);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MediaResult
|
||||
Dav1dDecoder::DoDecode(MediaRawData* aSample)
|
||||
{
|
||||
MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
|
||||
|
||||
Dav1dData data;
|
||||
PodZero(&data);
|
||||
uint8_t* dst = dav1d_data_create(&data, aSample->Size());
|
||||
if (!dst) {
|
||||
return MediaResult(NS_ERROR_OUT_OF_MEMORY,
|
||||
RESULT_DETAIL("Couldn't allocate dav1d AV1 input buffer"));
|
||||
}
|
||||
memcpy(dst, aSample->Data(), aSample->Size());
|
||||
data.m.timestamp = aSample->mTime;
|
||||
data.m.duration = aSample->mDuration;
|
||||
data.m.offset = aSample->mOffset;
|
||||
data.m.size = aSample->Size();
|
||||
|
||||
while (data.sz) {
|
||||
const int res = dav1d_send_data(mDecoder, &data);
|
||||
if (res == DAV1D_ERR(EAGAIN)) {
|
||||
MediaResult rv = DrainOutput();
|
||||
if (NS_FAILED(rv)) {
|
||||
dav1d_data_unref(&data);
|
||||
return rv;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (res < 0) {
|
||||
dav1d_data_unref(&data);
|
||||
return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR,
|
||||
RESULT_DETAIL("dav1d error decoding AV1 sample: %d",
|
||||
res));
|
||||
}
|
||||
}
|
||||
|
||||
dav1d_data_unref(&data);
|
||||
return DrainOutput();
|
||||
}
|
||||
|
||||
void
|
||||
Dav1dDecoder::ProcessDecode(MediaRawData* aSample)
|
||||
{
|
||||
MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
|
||||
if (mIsFlushing) {
|
||||
return;
|
||||
}
|
||||
MediaResult rv = DoDecode(aSample);
|
||||
if (NS_FAILED(rv)) {
|
||||
mCallback->Error(rv);
|
||||
} else {
|
||||
mCallback->InputExhausted();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Dav1dDecoder::Input(MediaRawData* aSample)
|
||||
{
|
||||
MOZ_ASSERT(mCallback->OnReaderTaskQueue());
|
||||
mTaskQueue->Dispatch(NewRunnableMethod<RefPtr<MediaRawData>>(
|
||||
this, &Dav1dDecoder::ProcessDecode, aSample));
|
||||
}
|
||||
|
||||
void
|
||||
Dav1dDecoder::ProcessDrain()
|
||||
{
|
||||
MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
|
||||
MediaResult rv = DrainOutput();
|
||||
if (NS_FAILED(rv)) {
|
||||
mCallback->Error(rv);
|
||||
} else {
|
||||
mCallback->DrainComplete();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Dav1dDecoder::Drain()
|
||||
{
|
||||
MOZ_ASSERT(mCallback->OnReaderTaskQueue());
|
||||
mTaskQueue->Dispatch(NewRunnableMethod(this, &Dav1dDecoder::ProcessDrain));
|
||||
}
|
||||
|
||||
/* static */
|
||||
bool
|
||||
Dav1dDecoder::IsAV1(const nsACString& aMimeType)
|
||||
{
|
||||
return aMimeType.EqualsLiteral("video/webm; codecs=av1") ||
|
||||
aMimeType.EqualsLiteral("video/av1");
|
||||
}
|
||||
|
||||
/* static */
|
||||
nsIntSize
|
||||
Dav1dDecoder::GetFrameSize(Span<const uint8_t> aBuffer)
|
||||
{
|
||||
Dav1dSequenceHeader seqHdr;
|
||||
PodZero(&seqHdr);
|
||||
if (dav1d_parse_sequence_header(&seqHdr,
|
||||
aBuffer.Elements(),
|
||||
aBuffer.Length()) < 0) {
|
||||
return nsIntSize(0, 0);
|
||||
}
|
||||
return nsIntSize(seqHdr.max_width, seqHdr.max_height);
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
#undef LOG
|
||||
@@ -0,0 +1,61 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#if !defined(Dav1dDecoder_h_)
|
||||
#define Dav1dDecoder_h_
|
||||
|
||||
#include "PlatformDecoderModule.h"
|
||||
#include "mozilla/Span.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct Dav1dContext Dav1dContext;
|
||||
typedef struct Dav1dPicture Dav1dPicture;
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
class Dav1dDecoder : public MediaDataDecoder
|
||||
{
|
||||
public:
|
||||
explicit Dav1dDecoder(const CreateDecoderParams& aParams);
|
||||
|
||||
RefPtr<InitPromise> Init() override;
|
||||
void Input(MediaRawData* aSample) override;
|
||||
void Flush() override;
|
||||
void Drain() override;
|
||||
void Shutdown() override;
|
||||
const char* GetDescriptionName() const override
|
||||
{
|
||||
return "dav1d (AV1) video decoder";
|
||||
}
|
||||
|
||||
// Return true if aMimeType is a one of the strings used
|
||||
// by our demuxers to identify AV1 streams.
|
||||
static bool IsAV1(const nsACString& aMimeType);
|
||||
|
||||
// Return the frame dimensions from a sequence header, when one is present.
|
||||
static nsIntSize GetFrameSize(Span<const uint8_t> aBuffer);
|
||||
|
||||
private:
|
||||
~Dav1dDecoder();
|
||||
void ProcessDecode(MediaRawData* aSample);
|
||||
MediaResult DoDecode(MediaRawData* aSample);
|
||||
MediaResult DrainOutput();
|
||||
MediaResult OutputPicture(const Dav1dPicture& aPicture);
|
||||
void ProcessDrain();
|
||||
|
||||
const RefPtr<layers::ImageContainer> mImageContainer;
|
||||
const RefPtr<TaskQueue> mTaskQueue;
|
||||
MediaDataDecoderCallback* mCallback;
|
||||
Atomic<bool> mIsFlushing;
|
||||
|
||||
Dav1dContext* mDecoder;
|
||||
|
||||
const VideoInfo& mInfo;
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
#endif // Dav1dDecoder_h_
|
||||
@@ -58,10 +58,10 @@ if CONFIG['MOZ_FFMPEG']:
|
||||
|
||||
if CONFIG['MOZ_AV1']:
|
||||
EXPORTS += [
|
||||
'agnostic/AOMDecoder.h',
|
||||
'agnostic/Dav1dDecoder.h',
|
||||
]
|
||||
UNIFIED_SOURCES += [
|
||||
'agnostic/AOMDecoder.cpp',
|
||||
'agnostic/Dav1dDecoder.cpp',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_APPLEMEDIA']:
|
||||
|
||||
@@ -4,9 +4,6 @@
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "mozilla/Preferences.h"
|
||||
#ifdef MOZ_AV1
|
||||
#include "AOMDecoder.h"
|
||||
#endif
|
||||
#include "MediaPrefs.h"
|
||||
#include "MediaDecoderStateMachine.h"
|
||||
#include "WebMDemuxer.h"
|
||||
@@ -136,4 +133,3 @@ WebMDecoder::GetMozDebugReaderData(nsAString& aString)
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#include "AbstractMediaDecoder.h"
|
||||
#include "MediaResource.h"
|
||||
#ifdef MOZ_AV1
|
||||
#include "AOMDecoder.h"
|
||||
#include "Dav1dDecoder.h"
|
||||
#endif
|
||||
#include "OpusDecoder.h"
|
||||
#include "VPXDecoder.h"
|
||||
@@ -711,7 +711,7 @@ WebMDemuxer::GetNextPacket(TrackInfo::TrackType aType, MediaRawDataQueue *aSampl
|
||||
break;
|
||||
#ifdef MOZ_AV1
|
||||
case NESTEGG_CODEC_AV1:
|
||||
isKeyframe = AOMDecoder::IsKeyframe(sample);
|
||||
isKeyframe = nestegg_packet_has_keyframe(holder->Packet()) == NESTEGG_PACKET_HAS_KEYFRAME_TRUE;
|
||||
break;
|
||||
#endif
|
||||
case NESTEGG_CODEC_AVC1:
|
||||
@@ -734,16 +734,18 @@ WebMDemuxer::GetNextPacket(TrackInfo::TrackType aType, MediaRawDataQueue *aSampl
|
||||
break;
|
||||
#ifdef MOZ_AV1
|
||||
case NESTEGG_CODEC_AV1:
|
||||
dimensions = AOMDecoder::GetFrameSize(sample);
|
||||
dimensions = Dav1dDecoder::GetFrameSize(sample);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
if (mLastSeenFrameSize.isSome()
|
||||
&& (dimensions != mLastSeenFrameSize.value())) {
|
||||
mInfo.mVideo.mDisplay = dimensions;
|
||||
mSharedVideoTrackInfo = new SharedTrackInfo(mInfo.mVideo, ++sStreamSourceID);
|
||||
if (dimensions.width > 0 && dimensions.height > 0) {
|
||||
if (mLastSeenFrameSize.isSome()
|
||||
&& (dimensions != mLastSeenFrameSize.value())) {
|
||||
mInfo.mVideo.mDisplay = dimensions;
|
||||
mSharedVideoTrackInfo = new SharedTrackInfo(mInfo.mVideo, ++sStreamSourceID);
|
||||
}
|
||||
mLastSeenFrameSize = Some(dimensions);
|
||||
}
|
||||
mLastSeenFrameSize = Some(dimensions);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,11 @@ if CONFIG['MOZ_WEBM_ENCODER']:
|
||||
'WebMWriter.cpp',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_AV1']:
|
||||
LOCAL_INCLUDES += [
|
||||
'/dom/media/platforms/agnostic',
|
||||
]
|
||||
|
||||
CXXFLAGS += CONFIG['MOZ_LIBVPX_CFLAGS']
|
||||
|
||||
FINAL_LIBRARY = 'xul'
|
||||
|
||||
@@ -71,15 +71,16 @@ vpx_codec_set_frame_buffer_functions
|
||||
vpx_codec_enc_init_multi_ver
|
||||
#endif
|
||||
#ifdef MOZ_AV1
|
||||
aom_codec_av1_dx
|
||||
aom_codec_dec_init_ver
|
||||
aom_codec_decode
|
||||
aom_codec_destroy
|
||||
aom_codec_err_to_string
|
||||
aom_codec_get_frame
|
||||
aom_codec_peek_stream_info
|
||||
aom_img_alloc
|
||||
aom_img_free
|
||||
dav1d_default_settings
|
||||
dav1d_open
|
||||
dav1d_parse_sequence_header
|
||||
dav1d_send_data
|
||||
dav1d_get_picture
|
||||
dav1d_flush
|
||||
dav1d_close
|
||||
dav1d_data_create
|
||||
dav1d_data_unref
|
||||
dav1d_picture_unref
|
||||
#endif
|
||||
#ifdef MOZ_JXL
|
||||
JxlDecoderCreate
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
This directory contains build files for the aom video
|
||||
codec reference implementation.
|
||||
|
||||
Any patches or additional configuration to be applied to the
|
||||
upstream source should be kept here in the media/libaom
|
||||
directory.
|
||||
|
||||
The upstream aom git repository is:
|
||||
|
||||
https://aomedia.googlesource.com/aom
|
||||
|
||||
The version used was tagged 3.4.0.
|
||||
@@ -1,7 +0,0 @@
|
||||
#define VERSION_MAJOR 3
|
||||
#define VERSION_MINOR 4
|
||||
#define VERSION_PATCH 0
|
||||
#define VERSION_EXTRA ""
|
||||
#define VERSION_PACKED ((VERSION_MAJOR<<16)|(VERSION_MINOR<<8)|(VERSION_PATCH))
|
||||
#define VERSION_STRING_NOSP "v3.4.0"
|
||||
#define VERSION_STRING " v3.4.0"
|
||||
@@ -1,293 +0,0 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
from pyparsing import (CharsNotIn, Group, Forward, Literal, Suppress, Word,
|
||||
QuotedString, ZeroOrMore, alphas, alphanums)
|
||||
from string import Template
|
||||
import re
|
||||
|
||||
# Grammar for CMake
|
||||
comment = Literal('#') + ZeroOrMore(CharsNotIn('\n'))
|
||||
quoted_argument = QuotedString('\"', '\\', multiline=True)
|
||||
unquoted_argument = CharsNotIn('\n ()#\"\\')
|
||||
argument = quoted_argument | unquoted_argument | Suppress(comment)
|
||||
arguments = Forward()
|
||||
arguments << (argument | (Literal('(') + ZeroOrMore(arguments) + Literal(')')))
|
||||
identifier = Word(alphas, alphanums+'_')
|
||||
command = Group(identifier + Literal('(') + ZeroOrMore(arguments) + Literal(')'))
|
||||
file_elements = command | Suppress(comment)
|
||||
cmake = ZeroOrMore(file_elements)
|
||||
|
||||
|
||||
def extract_arguments(parsed):
|
||||
"""Extract the command arguments skipping the parentheses"""
|
||||
return parsed[2:len(parsed) - 1]
|
||||
|
||||
|
||||
def match_block(command, parsed, start):
|
||||
"""Find the end of block starting with the command"""
|
||||
depth = 0
|
||||
end = start + 1
|
||||
endcommand = 'end' + command
|
||||
while parsed[end][0] != endcommand or depth > 0:
|
||||
if parsed[end][0] == command:
|
||||
depth += 1
|
||||
elif parsed[end][0] == endcommand:
|
||||
depth -= 1
|
||||
end = end + 1
|
||||
if end == len(parsed):
|
||||
print('error: eof when trying to match block statement: %s'
|
||||
% parsed[start])
|
||||
return end
|
||||
|
||||
|
||||
def parse_if(parsed, start):
|
||||
"""Parse if/elseif/else/endif into a list of conditions and commands"""
|
||||
depth = 0
|
||||
conditions = []
|
||||
condition = [extract_arguments(parsed[start])]
|
||||
start = start + 1
|
||||
end = start
|
||||
|
||||
while parsed[end][0] != 'endif' or depth > 0:
|
||||
command = parsed[end][0]
|
||||
if command == 'if':
|
||||
depth += 1
|
||||
elif command == 'else' and depth == 0:
|
||||
condition.append(parsed[start:end])
|
||||
conditions.append(condition)
|
||||
start = end + 1
|
||||
condition = [['TRUE']]
|
||||
elif command == 'elseif' and depth == 0:
|
||||
condition.append(parsed[start:end])
|
||||
conditions.append(condition)
|
||||
condition = [extract_arguments(parsed[end])]
|
||||
start = end + 1
|
||||
elif command == 'endif':
|
||||
depth -= 1
|
||||
end = end + 1
|
||||
if end == len(parsed):
|
||||
print('error: eof when trying to match if statement: %s'
|
||||
% parsed[start])
|
||||
condition.append(parsed[start:end])
|
||||
conditions.append(condition)
|
||||
return end, conditions
|
||||
|
||||
|
||||
def substs(variables, values):
|
||||
"""Substitute variables into values"""
|
||||
new_values = []
|
||||
for value in values:
|
||||
t = Template(value)
|
||||
new_value = t.safe_substitute(variables)
|
||||
|
||||
# Safe substitute leaves unrecognized variables in place.
|
||||
# We replace them with the empty string.
|
||||
new_values.append(re.sub('\$\{\w+\}', '', new_value))
|
||||
return new_values
|
||||
|
||||
|
||||
def evaluate(variables, cache_variables, parsed):
|
||||
"""Evaluate a list of parsed commands, returning sources to build"""
|
||||
i = 0
|
||||
sources = []
|
||||
while i < len(parsed):
|
||||
command = parsed[i][0]
|
||||
arguments = substs(variables, extract_arguments(parsed[i]))
|
||||
|
||||
if command == 'foreach':
|
||||
end = match_block(command, parsed, i)
|
||||
for argument in arguments[1:]:
|
||||
# ; is also a valid divider, why have one when you can have two?
|
||||
argument = argument.replace(';', ' ')
|
||||
for value in argument.split():
|
||||
variables[arguments[0]] = value
|
||||
cont_eval, new_sources = evaluate(variables, cache_variables,
|
||||
parsed[i+1:end])
|
||||
sources.extend(new_sources)
|
||||
if not cont_eval:
|
||||
return cont_eval, sources
|
||||
elif command == 'function':
|
||||
# for now we just execute functions inline at point of declaration
|
||||
# as this is sufficient to build libaom
|
||||
pass
|
||||
elif command == 'if':
|
||||
i, conditions = parse_if(parsed, i)
|
||||
for condition in conditions:
|
||||
if evaluate_boolean(variables, condition[0]):
|
||||
cont_eval, new_sources = evaluate(variables,
|
||||
cache_variables,
|
||||
condition[1])
|
||||
sources.extend(new_sources)
|
||||
if not cont_eval:
|
||||
return cont_eval, sources
|
||||
break
|
||||
elif command == 'include':
|
||||
if arguments:
|
||||
try:
|
||||
print('including: %s' % arguments[0])
|
||||
sources.extend(parse(variables, cache_variables, arguments[0]))
|
||||
except IOError:
|
||||
print('warning: could not include: %s' % arguments[0])
|
||||
elif command == 'list':
|
||||
try:
|
||||
action = arguments[0]
|
||||
variable = arguments[1]
|
||||
values = arguments[2:]
|
||||
if action == 'APPEND':
|
||||
if not variables.has_key(variable):
|
||||
variables[variable] = ' '.join(values)
|
||||
else:
|
||||
variables[variable] += ' ' + ' '.join(values)
|
||||
except (IndexError, KeyError):
|
||||
pass
|
||||
elif command == 'option':
|
||||
variable = arguments[0]
|
||||
value = arguments[2]
|
||||
# Allow options to be override without changing CMake files
|
||||
if not variables.has_key(variable):
|
||||
variables[variable] = value
|
||||
elif command == 'return':
|
||||
return False, sources
|
||||
elif command == 'set':
|
||||
variable = arguments[0]
|
||||
values = arguments[1:]
|
||||
# CACHE variables are not set if already present
|
||||
try:
|
||||
cache = values.index('CACHE')
|
||||
values = values[0:cache]
|
||||
if not variables.has_key(variable):
|
||||
variables[variable] = ' '.join(values)
|
||||
cache_variables.append(variable)
|
||||
except ValueError:
|
||||
variables[variable] = ' '.join(values)
|
||||
# we need to emulate the behavior of these function calls
|
||||
# because we don't support interpreting them directly
|
||||
# see bug 1492292
|
||||
elif command in ['set_aom_config_var', 'set_aom_detect_var']:
|
||||
variable = arguments[0]
|
||||
value = arguments[1]
|
||||
if variable not in variables:
|
||||
variables[variable] = value
|
||||
cache_variables.append(variable)
|
||||
elif command == 'set_aom_option_var':
|
||||
# option vars cannot go into cache_variables
|
||||
variable = arguments[0]
|
||||
value = arguments[2]
|
||||
if variable not in variables:
|
||||
variables[variable] = value
|
||||
elif command == 'add_asm_library':
|
||||
try:
|
||||
sources.extend(variables[arguments[1]].split(' '))
|
||||
except (IndexError, KeyError):
|
||||
pass
|
||||
elif command == 'add_intrinsics_object_library':
|
||||
try:
|
||||
sources.extend(variables[arguments[3]].split(' '))
|
||||
except (IndexError, KeyError):
|
||||
pass
|
||||
elif command == 'add_library':
|
||||
for source in arguments[1:]:
|
||||
sources.extend(source.split(' '))
|
||||
elif command == 'target_sources':
|
||||
for source in arguments[1:]:
|
||||
sources.extend(source.split(' '))
|
||||
elif command == 'MOZDEBUG':
|
||||
print('>>>> MOZDEBUG: %s' % ' '.join(arguments))
|
||||
i += 1
|
||||
return True, sources
|
||||
|
||||
|
||||
def evaluate_boolean(variables, arguments):
|
||||
"""Evaluate a boolean expression"""
|
||||
if not arguments:
|
||||
return False
|
||||
|
||||
argument = arguments[0]
|
||||
|
||||
if argument == 'NOT':
|
||||
return not evaluate_boolean(variables, arguments[1:])
|
||||
|
||||
if argument == '(':
|
||||
i = 0
|
||||
depth = 1
|
||||
while depth > 0 and i < len(arguments):
|
||||
i += 1
|
||||
if arguments[i] == '(':
|
||||
depth += 1
|
||||
if arguments[i] == ')':
|
||||
depth -= 1
|
||||
return evaluate_boolean(variables, arguments[1:i])
|
||||
|
||||
def evaluate_constant(argument):
|
||||
try:
|
||||
as_int = int(argument)
|
||||
if as_int != 0:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
except ValueError:
|
||||
upper = argument.upper()
|
||||
if upper in ['ON', 'YES', 'TRUE', 'Y']:
|
||||
return True
|
||||
elif upper in ['OFF', 'NO', 'FALSE', 'N', 'IGNORE', '', 'NOTFOUND']:
|
||||
return False
|
||||
elif upper.endswith('-NOTFOUND'):
|
||||
return False
|
||||
return None
|
||||
|
||||
def lookup_variable(argument):
|
||||
# If statements can have old-style variables which are not demarcated
|
||||
# like ${VARIABLE}. Attempt to look up the variable both ways.
|
||||
try:
|
||||
if re.search('\$\{\w+\}', argument):
|
||||
try:
|
||||
t = Template(argument)
|
||||
value = t.substitute(variables)
|
||||
try:
|
||||
# Attempt an old-style variable lookup with the
|
||||
# substituted value.
|
||||
return variables[value]
|
||||
except KeyError:
|
||||
return value
|
||||
except ValueError:
|
||||
# TODO: CMake supports nesting, e.g. ${${foo}}
|
||||
return None
|
||||
else:
|
||||
return variables[argument]
|
||||
except KeyError:
|
||||
return None
|
||||
|
||||
lhs = lookup_variable(argument)
|
||||
if lhs is None:
|
||||
# variable resolution failed, treat as string
|
||||
lhs = argument
|
||||
|
||||
if len(arguments) > 1:
|
||||
op = arguments[1]
|
||||
if op == 'AND':
|
||||
return evaluate_constant(lhs) and evaluate_boolean(variables, arguments[2:])
|
||||
elif op == 'MATCHES':
|
||||
rhs = lookup_variable(arguments[2])
|
||||
if not rhs:
|
||||
rhs = arguments[2]
|
||||
return not re.match(rhs, lhs) is None
|
||||
elif op == 'OR':
|
||||
return evaluate_constant(lhs) or evaluate_boolean(variables, arguments[2:])
|
||||
elif op == 'STREQUAL':
|
||||
rhs = lookup_variable(arguments[2])
|
||||
if not rhs:
|
||||
rhs = arguments[2]
|
||||
return lhs == rhs
|
||||
else:
|
||||
lhs = evaluate_constant(lhs)
|
||||
if lhs is None:
|
||||
lhs = lookup_variable(argument)
|
||||
|
||||
return lhs
|
||||
|
||||
|
||||
def parse(variables, cache_variables, filename):
|
||||
parsed = cmake.parseFile(filename)
|
||||
cont_eval, sources = evaluate(variables, cache_variables, parsed)
|
||||
return sources
|
||||
@@ -1,7 +0,0 @@
|
||||
#define VERSION_MAJOR 3
|
||||
#define VERSION_MINOR 4
|
||||
#define VERSION_PATCH 0
|
||||
#define VERSION_EXTRA ""
|
||||
#define VERSION_PACKED ((VERSION_MAJOR<<16)|(VERSION_MINOR<<8)|(VERSION_PATCH))
|
||||
#define VERSION_STRING_NOSP "v3.4.0"
|
||||
#define VERSION_STRING " v3.4.0"
|
||||
@@ -1,90 +0,0 @@
|
||||
;
|
||||
; Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
;
|
||||
; This source code is subject to the terms of the BSD 2 Clause License and
|
||||
; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
; was not distributed with this source code in the LICENSE file, you can
|
||||
; obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
; Media Patent License 1.0 was not distributed with this source code in the
|
||||
; PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
;
|
||||
|
||||
ARCH_ARM equ 0
|
||||
ARCH_MIPS equ 0
|
||||
ARCH_PPC equ 0
|
||||
ARCH_X86 equ 0
|
||||
ARCH_X86_64 equ 0
|
||||
CONFIG_ACCOUNTING equ 0
|
||||
CONFIG_ANALYZER equ 0
|
||||
CONFIG_AV1_DECODER equ 1
|
||||
CONFIG_AV1_ENCODER equ 0
|
||||
CONFIG_AV1_HIGHBITDEPTH equ 1
|
||||
CONFIG_AV1_TEMPORAL_DENOISING equ 0
|
||||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITRATE_ACCURACY equ 0
|
||||
CONFIG_BITRATE_ACCURACY_BL equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_COMPONENT_TIMING equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_EXCLUDE_SIMD_MISMATCH equ 0
|
||||
CONFIG_FPMT_TEST equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE_2 equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
CONFIG_INTER_STATS_ONLY equ 0
|
||||
CONFIG_LIBYUV equ 0
|
||||
CONFIG_MAX_DECODE_PROFILE equ 2
|
||||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NN_V2 equ 0
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_OPTICAL_FLOW_API equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PARTITION_SEARCH_ORDER equ 0
|
||||
CONFIG_PIC equ 0
|
||||
CONFIG_RATECTRL_LOG equ 0
|
||||
CONFIG_RD_COMMAND equ 0
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REALTIME_ONLY equ 0
|
||||
CONFIG_RT_ML_PARTITIONING equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_TFLITE equ 0
|
||||
CONFIG_THREE_PASS equ 0
|
||||
CONFIG_TUNE_BUTTERAUGLI equ 0
|
||||
CONFIG_TUNE_VMAF equ 0
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
DECODE_WIDTH_LIMIT equ 0
|
||||
FORCE_HIGHBITDEPTH_DECODING equ 0
|
||||
HAVE_AVX equ 0
|
||||
HAVE_AVX2 equ 0
|
||||
HAVE_DSPR2 equ 0
|
||||
HAVE_FEXCEPT equ 1
|
||||
HAVE_MIPS32 equ 0
|
||||
HAVE_MIPS64 equ 0
|
||||
HAVE_MMX equ 0
|
||||
HAVE_MSA equ 0
|
||||
HAVE_NEON equ 0
|
||||
HAVE_SSE equ 0
|
||||
HAVE_SSE2 equ 0
|
||||
HAVE_SSE3 equ 0
|
||||
HAVE_SSE4_1 equ 0
|
||||
HAVE_SSE4_2 equ 0
|
||||
HAVE_SSSE3 equ 0
|
||||
HAVE_VSX equ 0
|
||||
HAVE_WXWIDGETS equ 0
|
||||
STATIC_LINK_JXL equ 0
|
||||
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
#ifndef AOM_CONFIG_H_
|
||||
#define AOM_CONFIG_H_
|
||||
|
||||
#define ARCH_ARM 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_X86 0
|
||||
#define ARCH_X86_64 0
|
||||
#define CONFIG_ACCOUNTING 0
|
||||
#define CONFIG_ANALYZER 0
|
||||
#define CONFIG_AV1_DECODER 1
|
||||
#define CONFIG_AV1_ENCODER 0
|
||||
#define CONFIG_AV1_HIGHBITDEPTH 1
|
||||
#define CONFIG_AV1_TEMPORAL_DENOISING 0
|
||||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITRATE_ACCURACY 0
|
||||
#define CONFIG_BITRATE_ACCURACY_BL 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_COMPONENT_TIMING 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_EXCLUDE_SIMD_MISMATCH 0
|
||||
#define CONFIG_FPMT_TEST 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE_2 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
#define CONFIG_INTER_STATS_ONLY 0
|
||||
#define CONFIG_LIBYUV 0
|
||||
#define CONFIG_MAX_DECODE_PROFILE 2
|
||||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NN_V2 0
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_OPTICAL_FLOW_API 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PARTITION_SEARCH_ORDER 0
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_RATECTRL_LOG 0
|
||||
#define CONFIG_RD_COMMAND 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REALTIME_ONLY 0
|
||||
#define CONFIG_RT_ML_PARTITIONING 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_TFLITE 0
|
||||
#define CONFIG_THREE_PASS 0
|
||||
#define CONFIG_TUNE_BUTTERAUGLI 0
|
||||
#define CONFIG_TUNE_VMAF 0
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
#define DECODE_WIDTH_LIMIT 0
|
||||
#define FORCE_HIGHBITDEPTH_DECODING 0
|
||||
#define HAVE_AVX 0
|
||||
#define HAVE_AVX2 0
|
||||
#define HAVE_DSPR2 0
|
||||
#define HAVE_FEXCEPT 1
|
||||
#define HAVE_MIPS32 0
|
||||
#define HAVE_MIPS64 0
|
||||
#define HAVE_MMX 0
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_NEON 0
|
||||
#define HAVE_SSE 0
|
||||
#define HAVE_SSE2 0
|
||||
#define HAVE_SSE3 0
|
||||
#define HAVE_SSE4_1 0
|
||||
#define HAVE_SSE4_2 0
|
||||
#define HAVE_SSSE3 0
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INLINE inline
|
||||
#define STATIC_LINK_JXL 0
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,97 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AOM_SCALE_RTCD_H_
|
||||
#define AOM_SCALE_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
struct yv12_buffer_config;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void aom_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_borders aom_extend_frame_borders_c
|
||||
|
||||
void aom_extend_frame_borders_y_c(struct yv12_buffer_config *ybf);
|
||||
#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c
|
||||
|
||||
void aom_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c
|
||||
|
||||
void aom_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c
|
||||
|
||||
void aom_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c
|
||||
|
||||
void aom_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_i_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c
|
||||
|
||||
void aom_vertical_band_5_3_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c
|
||||
|
||||
void aom_vertical_band_5_4_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c
|
||||
|
||||
void aom_yv12_copy_frame_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, const int num_planes);
|
||||
#define aom_yv12_copy_frame aom_yv12_copy_frame_c
|
||||
|
||||
void aom_yv12_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_u aom_yv12_copy_u_c
|
||||
|
||||
void aom_yv12_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_v aom_yv12_copy_v_c
|
||||
|
||||
void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
|
||||
#define aom_yv12_copy_y aom_yv12_copy_y_c
|
||||
|
||||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
int aom_yv12_realloc_with_new_border_c(struct yv12_buffer_config *ybf, int new_border, int byte_alignment, int num_planes);
|
||||
#define aom_yv12_realloc_with_new_border aom_yv12_realloc_with_new_border_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
||||
#include "config/aom_config.h"
|
||||
|
||||
#ifdef RTCD_C
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,419 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AV1_RTCD_H_
|
||||
#define AV1_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
/*
|
||||
* AV1
|
||||
*/
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom_dsp/odintrin.h"
|
||||
#include "aom_dsp/txfm_common.h"
|
||||
#include "av1/common/common.h"
|
||||
#include "av1/common/enums.h"
|
||||
#include "av1/common/quant_common.h"
|
||||
#include "av1/common/filter.h"
|
||||
#include "av1/common/convolve.h"
|
||||
#include "av1/common/av1_txfm.h"
|
||||
#include "av1/common/restoration.h"
|
||||
|
||||
struct macroblockd;
|
||||
|
||||
/* Encoder forward decls */
|
||||
struct macroblock;
|
||||
struct txfm_param;
|
||||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
enum { NONE, RELU, SOFTSIGN, SIGMOID } UENUM1BYTE(ACTIVATION);
|
||||
#if CONFIG_NN_V2
|
||||
enum { SOFTMAX_CROSS_ENTROPY } UENUM1BYTE(LOSS);
|
||||
struct NN_CONFIG_V2;
|
||||
typedef struct NN_CONFIG_V2 NN_CONFIG_V2;
|
||||
struct FC_LAYER;
|
||||
typedef struct FC_LAYER FC_LAYER;
|
||||
#endif // CONFIG_NN_V2
|
||||
|
||||
struct CNN_CONFIG;
|
||||
typedef struct CNN_CONFIG CNN_CONFIG;
|
||||
struct CNN_LAYER_CONFIG;
|
||||
typedef struct CNN_LAYER_CONFIG CNN_LAYER_CONFIG;
|
||||
struct CNN_THREAD_DATA;
|
||||
typedef struct CNN_THREAD_DATA CNN_THREAD_DATA;
|
||||
struct CNN_BRANCH_CONFIG;
|
||||
typedef struct CNN_BRANCH_CONFIG CNN_BRANCH_CONFIG;
|
||||
struct CNN_MULTI_OUT;
|
||||
typedef struct CNN_MULTI_OUT CNN_MULTI_OUT;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
#if CONFIG_AV1_HIGHBITDEPTH
|
||||
typedef void (*cfl_subsample_hbd_fn)(const uint16_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
typedef void (*cfl_predict_hbd_fn)(const int16_t *src, uint16_t *dst,
|
||||
int dst_stride, int alpha_q3, int bd);
|
||||
#endif
|
||||
|
||||
typedef void (*cfl_subtract_average_fn)(const uint16_t *src, int16_t *dst);
|
||||
|
||||
typedef void (*cfl_predict_lbd_fn)(const int16_t *src, uint8_t *dst,
|
||||
int dst_stride, int alpha_q3);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void av1_apply_selfguided_restoration_c(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
#define av1_apply_selfguided_restoration av1_apply_selfguided_restoration_c
|
||||
|
||||
void av1_build_compound_diffwtd_mask_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
#define av1_build_compound_diffwtd_mask av1_build_compound_diffwtd_mask_c
|
||||
|
||||
void av1_build_compound_diffwtd_mask_d16_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
#define av1_build_compound_diffwtd_mask_d16 av1_build_compound_diffwtd_mask_d16_c
|
||||
|
||||
void av1_build_compound_diffwtd_mask_highbd_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
#define av1_build_compound_diffwtd_mask_highbd av1_build_compound_diffwtd_mask_highbd_c
|
||||
|
||||
int64_t av1_calc_frame_error_c(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
#define av1_calc_frame_error av1_calc_frame_error_c
|
||||
|
||||
void av1_convolve_2d_scale_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
#define av1_convolve_2d_scale av1_convolve_2d_scale_c
|
||||
|
||||
void av1_convolve_2d_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
#define av1_convolve_2d_sr av1_convolve_2d_sr_c
|
||||
|
||||
void av1_convolve_horiz_rs_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
#define av1_convolve_horiz_rs av1_convolve_horiz_rs_c
|
||||
|
||||
void av1_convolve_x_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
#define av1_convolve_x_sr av1_convolve_x_sr_c
|
||||
|
||||
void av1_convolve_y_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
#define av1_convolve_y_sr av1_convolve_y_sr_c
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
#define av1_dist_wtd_convolve_2d av1_dist_wtd_convolve_2d_c
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
#define av1_dist_wtd_convolve_2d_copy av1_dist_wtd_convolve_2d_copy_c
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
#define av1_dist_wtd_convolve_x av1_dist_wtd_convolve_x_c
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
#define av1_dist_wtd_convolve_y av1_dist_wtd_convolve_y_c
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
#define av1_dr_prediction_z1 av1_dr_prediction_z1_c
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z2 av1_dr_prediction_z2_c
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z3 av1_dr_prediction_z3_c
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
#define av1_filter_intra_edge av1_filter_intra_edge_c
|
||||
|
||||
void av1_filter_intra_edge_high_c(uint16_t *p, int sz, int strength);
|
||||
#define av1_filter_intra_edge_high av1_filter_intra_edge_high_c
|
||||
|
||||
void av1_filter_intra_predictor_c(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
#define av1_filter_intra_predictor av1_filter_intra_predictor_c
|
||||
|
||||
void av1_highbd_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8 av1_highbd_convolve8_c
|
||||
|
||||
void av1_highbd_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_c
|
||||
|
||||
void av1_highbd_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_c
|
||||
|
||||
void av1_highbd_convolve_2d_scale_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_convolve_2d_scale av1_highbd_convolve_2d_scale_c
|
||||
|
||||
void av1_highbd_convolve_2d_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_convolve_2d_sr av1_highbd_convolve_2d_sr_c
|
||||
|
||||
void av1_highbd_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_avg av1_highbd_convolve_avg_c
|
||||
|
||||
void av1_highbd_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_copy av1_highbd_convolve_copy_c
|
||||
|
||||
void av1_highbd_convolve_horiz_rs_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
#define av1_highbd_convolve_horiz_rs av1_highbd_convolve_horiz_rs_c
|
||||
|
||||
void av1_highbd_convolve_x_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_convolve_x_sr av1_highbd_convolve_x_sr_c
|
||||
|
||||
void av1_highbd_convolve_y_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
#define av1_highbd_convolve_y_sr av1_highbd_convolve_y_sr_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_2d av1_highbd_dist_wtd_convolve_2d_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_2d_copy av1_highbd_dist_wtd_convolve_2d_copy_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_x av1_highbd_dist_wtd_convolve_x_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_y av1_highbd_dist_wtd_convolve_y_c
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z3 av1_highbd_dr_prediction_z3_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x64 av1_highbd_inv_txfm_add_16x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x64 av1_highbd_inv_txfm_add_32x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_4x16 av1_highbd_inv_txfm_add_4x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_4x4 av1_highbd_inv_txfm_add_4x4_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x16 av1_highbd_inv_txfm_add_64x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x32 av1_highbd_inv_txfm_add_64x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x64 av1_highbd_inv_txfm_add_64x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x4 av1_highbd_inv_txfm_add_8x4_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x8 av1_highbd_inv_txfm_add_8x8_c
|
||||
|
||||
void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_16_add av1_highbd_iwht4x4_16_add_c
|
||||
|
||||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
#define av1_highbd_warp_affine av1_highbd_warp_affine_c
|
||||
|
||||
void av1_highbd_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_wiener_convolve_add_src av1_highbd_wiener_convolve_add_src_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x4 av1_inv_txfm2d_add_16x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x64 av1_inv_txfm2d_add_16x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x64 av1_inv_txfm2d_add_32x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x8 av1_inv_txfm2d_add_32x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x16 av1_inv_txfm2d_add_4x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x4 av1_inv_txfm2d_add_4x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x16 av1_inv_txfm2d_add_64x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x32 av1_inv_txfm2d_add_64x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x32 av1_inv_txfm2d_add_8x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x8 av1_inv_txfm2d_add_8x8_c
|
||||
|
||||
void av1_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_inv_txfm_add av1_inv_txfm_add_c
|
||||
|
||||
void av1_resize_and_extend_frame_c(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
#define av1_resize_and_extend_frame av1_resize_and_extend_frame_c
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
#define av1_round_shift_array av1_round_shift_array_c
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
#define av1_selfguided_restoration av1_selfguided_restoration_c
|
||||
|
||||
void av1_upsample_intra_edge_c(uint8_t *p, int sz);
|
||||
#define av1_upsample_intra_edge av1_upsample_intra_edge_c
|
||||
|
||||
void av1_upsample_intra_edge_high_c(uint16_t *p, int sz, int bd);
|
||||
#define av1_upsample_intra_edge_high av1_upsample_intra_edge_high_c
|
||||
|
||||
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
#define av1_warp_affine av1_warp_affine_c
|
||||
|
||||
void av1_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
#define av1_wiener_convolve_add_src av1_wiener_convolve_add_src_c
|
||||
|
||||
void cdef_copy_rect8_16bit_to_16bit_c(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
#define cdef_copy_rect8_16bit_to_16bit cdef_copy_rect8_16bit_to_16bit_c
|
||||
|
||||
void cdef_copy_rect8_8bit_to_16bit_c(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
#define cdef_copy_rect8_8bit_to_16bit cdef_copy_rect8_8bit_to_16bit_c
|
||||
|
||||
void cdef_filter_16_0_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
#define cdef_filter_16_0 cdef_filter_16_0_c
|
||||
|
||||
void cdef_filter_16_1_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
#define cdef_filter_16_1 cdef_filter_16_1_c
|
||||
|
||||
void cdef_filter_16_2_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
#define cdef_filter_16_2 cdef_filter_16_2_c
|
||||
|
||||
void cdef_filter_16_3_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
#define cdef_filter_16_3 cdef_filter_16_3_c
|
||||
|
||||
void cdef_filter_8_0_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
#define cdef_filter_8_0 cdef_filter_8_0_c
|
||||
|
||||
void cdef_filter_8_1_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
#define cdef_filter_8_1 cdef_filter_8_1_c
|
||||
|
||||
void cdef_filter_8_2_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
#define cdef_filter_8_2 cdef_filter_8_2_c
|
||||
|
||||
void cdef_filter_8_3_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
#define cdef_filter_8_3 cdef_filter_8_3_c
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
#define cdef_find_dir cdef_find_dir_c
|
||||
|
||||
void cdef_find_dir_dual_c(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
#define cdef_find_dir_dual cdef_find_dir_dual_c
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_c(TX_SIZE tx_size);
|
||||
#define cfl_get_luma_subsampling_420_hbd cfl_get_luma_subsampling_420_hbd_c
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size);
|
||||
#define cfl_get_luma_subsampling_420_lbd cfl_get_luma_subsampling_420_lbd_c
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_c(TX_SIZE tx_size);
|
||||
#define cfl_get_luma_subsampling_422_hbd cfl_get_luma_subsampling_422_hbd_c
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size);
|
||||
#define cfl_get_luma_subsampling_422_lbd cfl_get_luma_subsampling_422_lbd_c
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_c(TX_SIZE tx_size);
|
||||
#define cfl_get_luma_subsampling_444_hbd cfl_get_luma_subsampling_444_hbd_c
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size);
|
||||
#define cfl_get_luma_subsampling_444_lbd cfl_get_luma_subsampling_444_lbd_c
|
||||
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_c(TX_SIZE tx_size);
|
||||
#define cfl_get_predict_hbd_fn cfl_get_predict_hbd_fn_c
|
||||
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_c(TX_SIZE tx_size);
|
||||
#define cfl_get_predict_lbd_fn cfl_get_predict_lbd_fn_c
|
||||
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_c(TX_SIZE tx_size);
|
||||
#define cfl_get_subtract_average_fn cfl_get_subtract_average_fn_c
|
||||
|
||||
void av1_rtcd(void);
|
||||
|
||||
#include "config/aom_config.h"
|
||||
|
||||
#ifdef RTCD_C
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,91 +0,0 @@
|
||||
;
|
||||
; Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
;
|
||||
; This source code is subject to the terms of the BSD 2 Clause License and
|
||||
; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
; was not distributed with this source code in the LICENSE file, you can
|
||||
; obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
; Media Patent License 1.0 was not distributed with this source code in the
|
||||
; PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
;
|
||||
|
||||
.equ ARCH_ARM, 1
|
||||
.equ ARCH_MIPS, 0
|
||||
.equ ARCH_PPC, 0
|
||||
.equ ARCH_X86, 0
|
||||
.equ ARCH_X86_64, 0
|
||||
.equ CONFIG_ACCOUNTING, 0
|
||||
.equ CONFIG_ANALYZER, 0
|
||||
.equ CONFIG_AV1_DECODER, 1
|
||||
.equ CONFIG_AV1_ENCODER, 0
|
||||
.equ CONFIG_AV1_HIGHBITDEPTH, 1
|
||||
.equ CONFIG_AV1_TEMPORAL_DENOISING, 0
|
||||
.equ CONFIG_BIG_ENDIAN, 0
|
||||
.equ CONFIG_BITRATE_ACCURACY, 0
|
||||
.equ CONFIG_BITRATE_ACCURACY_BL, 0
|
||||
.equ CONFIG_BITSTREAM_DEBUG, 0
|
||||
.equ CONFIG_COEFFICIENT_RANGE_CHECKING, 0
|
||||
.equ CONFIG_COLLECT_COMPONENT_TIMING, 0
|
||||
.equ CONFIG_COLLECT_PARTITION_STATS, 0
|
||||
.equ CONFIG_COLLECT_RD_STATS, 0
|
||||
.equ CONFIG_DEBUG, 0
|
||||
.equ CONFIG_DENOISE, 1
|
||||
.equ CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8, 1
|
||||
.equ CONFIG_ENTROPY_STATS, 0
|
||||
.equ CONFIG_EXCLUDE_SIMD_MISMATCH, 0
|
||||
.equ CONFIG_FPMT_TEST, 0
|
||||
.equ CONFIG_FRAME_PARALLEL_ENCODE, 0
|
||||
.equ CONFIG_FRAME_PARALLEL_ENCODE_2, 0
|
||||
.equ CONFIG_GCC, 1
|
||||
.equ CONFIG_GCOV, 0
|
||||
.equ CONFIG_GPROF, 0
|
||||
.equ CONFIG_INSPECTION, 0
|
||||
.equ CONFIG_INTERNAL_STATS, 0
|
||||
.equ CONFIG_INTER_STATS_ONLY, 0
|
||||
.equ CONFIG_LIBYUV, 0
|
||||
.equ CONFIG_MAX_DECODE_PROFILE, 2
|
||||
.equ CONFIG_MISMATCH_DEBUG, 0
|
||||
.equ CONFIG_MULTITHREAD, 1
|
||||
.equ CONFIG_NN_V2, 0
|
||||
.equ CONFIG_NORMAL_TILE_MODE, 0
|
||||
.equ CONFIG_OPTICAL_FLOW_API, 0
|
||||
.equ CONFIG_OS_SUPPORT, 1
|
||||
.equ CONFIG_PARTITION_SEARCH_ORDER, 0
|
||||
.equ CONFIG_PIC, 1
|
||||
.equ CONFIG_RATECTRL_LOG, 0
|
||||
.equ CONFIG_RD_COMMAND, 0
|
||||
.equ CONFIG_RD_DEBUG, 0
|
||||
.equ CONFIG_REALTIME_ONLY, 0
|
||||
.equ CONFIG_RT_ML_PARTITIONING, 0
|
||||
.equ CONFIG_RUNTIME_CPU_DETECT, 1
|
||||
.equ CONFIG_SHARED, 0
|
||||
.equ CONFIG_SIZE_LIMIT, 0
|
||||
.equ CONFIG_SPATIAL_RESAMPLING, 1
|
||||
.equ CONFIG_SPEED_STATS, 0
|
||||
.equ CONFIG_TFLITE, 0
|
||||
.equ CONFIG_THREE_PASS, 0
|
||||
.equ CONFIG_TUNE_BUTTERAUGLI, 0
|
||||
.equ CONFIG_TUNE_VMAF, 0
|
||||
.equ CONFIG_WEBM_IO, 0
|
||||
.equ DECODE_HEIGHT_LIMIT, 0
|
||||
.equ DECODE_WIDTH_LIMIT, 0
|
||||
.equ FORCE_HIGHBITDEPTH_DECODING, 0
|
||||
.equ HAVE_AVX, 0
|
||||
.equ HAVE_AVX2, 0
|
||||
.equ HAVE_DSPR2, 0
|
||||
.equ HAVE_FEXCEPT, 1
|
||||
.equ HAVE_MIPS32, 0
|
||||
.equ HAVE_MIPS64, 0
|
||||
.equ HAVE_MMX, 0
|
||||
.equ HAVE_MSA, 0
|
||||
.equ HAVE_NEON, 1
|
||||
.equ HAVE_SSE, 0
|
||||
.equ HAVE_SSE2, 0
|
||||
.equ HAVE_SSE3, 0
|
||||
.equ HAVE_SSE4_1, 0
|
||||
.equ HAVE_SSE4_2, 0
|
||||
.equ HAVE_SSSE3, 0
|
||||
.equ HAVE_VSX, 0
|
||||
.equ HAVE_WXWIDGETS, 0
|
||||
.equ STATIC_LINK_JXL, 0
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
#ifndef AOM_CONFIG_H_
|
||||
#define AOM_CONFIG_H_
|
||||
|
||||
#define ARCH_ARM 1
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_X86 0
|
||||
#define ARCH_X86_64 0
|
||||
#define CONFIG_ACCOUNTING 0
|
||||
#define CONFIG_ANALYZER 0
|
||||
#define CONFIG_AV1_DECODER 1
|
||||
#define CONFIG_AV1_ENCODER 0
|
||||
#define CONFIG_AV1_HIGHBITDEPTH 1
|
||||
#define CONFIG_AV1_TEMPORAL_DENOISING 0
|
||||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITRATE_ACCURACY 0
|
||||
#define CONFIG_BITRATE_ACCURACY_BL 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_COMPONENT_TIMING 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_EXCLUDE_SIMD_MISMATCH 0
|
||||
#define CONFIG_FPMT_TEST 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE_2 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
#define CONFIG_INTER_STATS_ONLY 0
|
||||
#define CONFIG_LIBYUV 0
|
||||
#define CONFIG_MAX_DECODE_PROFILE 2
|
||||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NN_V2 0
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_OPTICAL_FLOW_API 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PARTITION_SEARCH_ORDER 0
|
||||
#define CONFIG_PIC 1
|
||||
#define CONFIG_RATECTRL_LOG 0
|
||||
#define CONFIG_RD_COMMAND 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REALTIME_ONLY 0
|
||||
#define CONFIG_RT_ML_PARTITIONING 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_TFLITE 0
|
||||
#define CONFIG_THREE_PASS 0
|
||||
#define CONFIG_TUNE_BUTTERAUGLI 0
|
||||
#define CONFIG_TUNE_VMAF 0
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
#define DECODE_WIDTH_LIMIT 0
|
||||
#define FORCE_HIGHBITDEPTH_DECODING 0
|
||||
#define HAVE_AVX 0
|
||||
#define HAVE_AVX2 0
|
||||
#define HAVE_DSPR2 0
|
||||
#define HAVE_FEXCEPT 1
|
||||
#define HAVE_MIPS32 0
|
||||
#define HAVE_MIPS64 0
|
||||
#define HAVE_MMX 0
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_NEON 1
|
||||
#define HAVE_SSE 0
|
||||
#define HAVE_SSE2 0
|
||||
#define HAVE_SSE3 0
|
||||
#define HAVE_SSE4_1 0
|
||||
#define HAVE_SSE4_2 0
|
||||
#define HAVE_SSSE3 0
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INLINE inline
|
||||
#define STATIC_LINK_JXL 0
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,102 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AOM_SCALE_RTCD_H_
|
||||
#define AOM_SCALE_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
struct yv12_buffer_config;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void aom_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_borders aom_extend_frame_borders_c
|
||||
|
||||
void aom_extend_frame_borders_y_c(struct yv12_buffer_config *ybf);
|
||||
#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c
|
||||
|
||||
void aom_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c
|
||||
|
||||
void aom_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c
|
||||
|
||||
void aom_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c
|
||||
|
||||
void aom_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_i_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c
|
||||
|
||||
void aom_vertical_band_5_3_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c
|
||||
|
||||
void aom_vertical_band_5_4_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c
|
||||
|
||||
void aom_yv12_copy_frame_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, const int num_planes);
|
||||
#define aom_yv12_copy_frame aom_yv12_copy_frame_c
|
||||
|
||||
void aom_yv12_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_u aom_yv12_copy_u_c
|
||||
|
||||
void aom_yv12_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_v aom_yv12_copy_v_c
|
||||
|
||||
void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
|
||||
#define aom_yv12_copy_y aom_yv12_copy_y_c
|
||||
|
||||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
int aom_yv12_realloc_with_new_border_c(struct yv12_buffer_config *ybf, int new_border, int byte_alignment, int num_planes);
|
||||
#define aom_yv12_realloc_with_new_border aom_yv12_realloc_with_new_border_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
||||
#include "config/aom_config.h"
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/arm.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = aom_arm_cpu_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,647 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AV1_RTCD_H_
|
||||
#define AV1_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
/*
|
||||
* AV1
|
||||
*/
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom_dsp/odintrin.h"
|
||||
#include "aom_dsp/txfm_common.h"
|
||||
#include "av1/common/common.h"
|
||||
#include "av1/common/enums.h"
|
||||
#include "av1/common/quant_common.h"
|
||||
#include "av1/common/filter.h"
|
||||
#include "av1/common/convolve.h"
|
||||
#include "av1/common/av1_txfm.h"
|
||||
#include "av1/common/restoration.h"
|
||||
|
||||
struct macroblockd;
|
||||
|
||||
/* Encoder forward decls */
|
||||
struct macroblock;
|
||||
struct txfm_param;
|
||||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
enum { NONE, RELU, SOFTSIGN, SIGMOID } UENUM1BYTE(ACTIVATION);
|
||||
#if CONFIG_NN_V2
|
||||
enum { SOFTMAX_CROSS_ENTROPY } UENUM1BYTE(LOSS);
|
||||
struct NN_CONFIG_V2;
|
||||
typedef struct NN_CONFIG_V2 NN_CONFIG_V2;
|
||||
struct FC_LAYER;
|
||||
typedef struct FC_LAYER FC_LAYER;
|
||||
#endif // CONFIG_NN_V2
|
||||
|
||||
struct CNN_CONFIG;
|
||||
typedef struct CNN_CONFIG CNN_CONFIG;
|
||||
struct CNN_LAYER_CONFIG;
|
||||
typedef struct CNN_LAYER_CONFIG CNN_LAYER_CONFIG;
|
||||
struct CNN_THREAD_DATA;
|
||||
typedef struct CNN_THREAD_DATA CNN_THREAD_DATA;
|
||||
struct CNN_BRANCH_CONFIG;
|
||||
typedef struct CNN_BRANCH_CONFIG CNN_BRANCH_CONFIG;
|
||||
struct CNN_MULTI_OUT;
|
||||
typedef struct CNN_MULTI_OUT CNN_MULTI_OUT;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
#if CONFIG_AV1_HIGHBITDEPTH
|
||||
typedef void (*cfl_subsample_hbd_fn)(const uint16_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
typedef void (*cfl_predict_hbd_fn)(const int16_t *src, uint16_t *dst,
|
||||
int dst_stride, int alpha_q3, int bd);
|
||||
#endif
|
||||
|
||||
typedef void (*cfl_subtract_average_fn)(const uint16_t *src, int16_t *dst);
|
||||
|
||||
typedef void (*cfl_predict_lbd_fn)(const int16_t *src, uint8_t *dst,
|
||||
int dst_stride, int alpha_q3);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void av1_apply_selfguided_restoration_c(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
void av1_apply_selfguided_restoration_neon(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
RTCD_EXTERN void (*av1_apply_selfguided_restoration)(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
#define av1_build_compound_diffwtd_mask av1_build_compound_diffwtd_mask_c
|
||||
|
||||
void av1_build_compound_diffwtd_mask_d16_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
void av1_build_compound_diffwtd_mask_d16_neon(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask_d16)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_highbd_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
#define av1_build_compound_diffwtd_mask_highbd av1_build_compound_diffwtd_mask_highbd_c
|
||||
|
||||
int64_t av1_calc_frame_error_c(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
#define av1_calc_frame_error av1_calc_frame_error_c
|
||||
|
||||
void av1_convolve_2d_scale_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
#define av1_convolve_2d_scale av1_convolve_2d_scale_c
|
||||
|
||||
void av1_convolve_2d_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_sr_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_2d_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_horiz_rs_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
#define av1_convolve_horiz_rs av1_convolve_horiz_rs_c
|
||||
|
||||
void av1_convolve_x_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_x_sr_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_x_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_y_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
void av1_convolve_y_sr_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
void av1_dr_prediction_z1_neon(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z2_neon(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z3_neon(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
#define av1_filter_intra_edge av1_filter_intra_edge_c
|
||||
|
||||
void av1_filter_intra_edge_high_c(uint16_t *p, int sz, int strength);
|
||||
#define av1_filter_intra_edge_high av1_filter_intra_edge_high_c
|
||||
|
||||
void av1_filter_intra_predictor_c(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
void av1_filter_intra_predictor_neon(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
RTCD_EXTERN void (*av1_filter_intra_predictor)(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
|
||||
void av1_highbd_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8 av1_highbd_convolve8_c
|
||||
|
||||
void av1_highbd_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_c
|
||||
|
||||
void av1_highbd_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_c
|
||||
|
||||
void av1_highbd_convolve_2d_scale_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_convolve_2d_scale av1_highbd_convolve_2d_scale_c
|
||||
|
||||
void av1_highbd_convolve_2d_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_convolve_2d_sr av1_highbd_convolve_2d_sr_c
|
||||
|
||||
void av1_highbd_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_avg av1_highbd_convolve_avg_c
|
||||
|
||||
void av1_highbd_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_copy av1_highbd_convolve_copy_c
|
||||
|
||||
void av1_highbd_convolve_horiz_rs_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
#define av1_highbd_convolve_horiz_rs av1_highbd_convolve_horiz_rs_c
|
||||
|
||||
void av1_highbd_convolve_x_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_convolve_x_sr av1_highbd_convolve_x_sr_c
|
||||
|
||||
void av1_highbd_convolve_y_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
#define av1_highbd_convolve_y_sr av1_highbd_convolve_y_sr_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_2d av1_highbd_dist_wtd_convolve_2d_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_2d_copy av1_highbd_dist_wtd_convolve_2d_copy_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_x av1_highbd_dist_wtd_convolve_x_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_y av1_highbd_dist_wtd_convolve_y_c
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z3 av1_highbd_dr_prediction_z3_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_neon(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x32_neon(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x32)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_neon(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x64 av1_highbd_inv_txfm_add_16x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x8_neon(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x16_neon(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x16)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x32_neon(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x32)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x64_neon(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x64)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_neon(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x16)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x4_neon(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_neon(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x16 av1_highbd_inv_txfm_add_64x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_64x32_neon(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_64x32)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_64x64_neon(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_64x64)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x16_neon(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x16)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x4_neon(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x8_neon(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_16_add av1_highbd_iwht4x4_16_add_c
|
||||
|
||||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
#define av1_highbd_warp_affine av1_highbd_warp_affine_c
|
||||
|
||||
void av1_highbd_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_wiener_convolve_add_src av1_highbd_wiener_convolve_add_src_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_16x32_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_16x32)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_16x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_16x4_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_16x4)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_16x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_16x64_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_16x64)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_16x8_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_16x8)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_32x16_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_32x16)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_32x32_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_32x32)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_32x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_32x64_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_32x64)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_32x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_32x8_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_32x8)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_4x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_4x16_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x16)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_4x4_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x4)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_4x8_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x8)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_64x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_64x16_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_64x16)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_64x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_64x32_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_64x32)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_64x64_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_64x64)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_8x16_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x16)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_8x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_8x32_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x32)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_8x4_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x4)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_8x8_neon(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x8)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_inv_txfm_add_neon(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_resize_and_extend_frame_c(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
void av1_resize_and_extend_frame_neon(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
RTCD_EXTERN void (*av1_resize_and_extend_frame)(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_neon(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
int av1_selfguided_restoration_neon(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
RTCD_EXTERN int (*av1_selfguided_restoration)(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
|
||||
void av1_upsample_intra_edge_c(uint8_t *p, int sz);
|
||||
#define av1_upsample_intra_edge av1_upsample_intra_edge_c
|
||||
|
||||
void av1_upsample_intra_edge_high_c(uint16_t *p, int sz, int bd);
|
||||
#define av1_upsample_intra_edge_high av1_upsample_intra_edge_high_c
|
||||
|
||||
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_warp_affine_neon(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
|
||||
void av1_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
void av1_wiener_convolve_add_src_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_copy_rect8_16bit_to_16bit_c(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_neon(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_16bit_to_16bit)(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_copy_rect8_8bit_to_16bit_c(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_neon(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_8bit_to_16bit)(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_filter_16_0_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_neon(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_0)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_1_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_neon(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_1)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_2_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_neon(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_2)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_3_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_neon(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_3)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_0_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_neon(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_0)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_1_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_neon(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_1)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_2_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_neon(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_2)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_3_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_neon(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_3)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_neon(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
RTCD_EXTERN int (*cdef_find_dir)(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
||||
void cdef_find_dir_dual_c(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_neon(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
RTCD_EXTERN void (*cdef_find_dir_dual)(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_neon(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_420_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_neon(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_420_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_neon(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_422_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_neon(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_422_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_neon(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_444_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_neon(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_444_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_neon(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_hbd_fn (*cfl_get_predict_hbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_neon(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_lbd_fn (*cfl_get_predict_lbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_c(TX_SIZE tx_size);
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_neon(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subtract_average_fn (*cfl_get_subtract_average_fn)(TX_SIZE tx_size);
|
||||
|
||||
void av1_rtcd(void);
|
||||
|
||||
#include "config/aom_config.h"
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/arm.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = aom_arm_cpu_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_c;
|
||||
if (flags & HAS_NEON) av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_neon;
|
||||
av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_c;
|
||||
if (flags & HAS_NEON) av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_neon;
|
||||
av1_convolve_2d_sr = av1_convolve_2d_sr_c;
|
||||
if (flags & HAS_NEON) av1_convolve_2d_sr = av1_convolve_2d_sr_neon;
|
||||
av1_convolve_x_sr = av1_convolve_x_sr_c;
|
||||
if (flags & HAS_NEON) av1_convolve_x_sr = av1_convolve_x_sr_neon;
|
||||
av1_convolve_y_sr = av1_convolve_y_sr_c;
|
||||
if (flags & HAS_NEON) av1_convolve_y_sr = av1_convolve_y_sr_neon;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_NEON) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_neon;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_NEON) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_neon;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_NEON) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_neon;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_NEON) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_neon;
|
||||
av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
|
||||
if (flags & HAS_NEON) av1_dr_prediction_z1 = av1_dr_prediction_z1_neon;
|
||||
av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
|
||||
if (flags & HAS_NEON) av1_dr_prediction_z2 = av1_dr_prediction_z2_neon;
|
||||
av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
|
||||
if (flags & HAS_NEON) av1_dr_prediction_z3 = av1_dr_prediction_z3_neon;
|
||||
av1_filter_intra_predictor = av1_filter_intra_predictor_c;
|
||||
if (flags & HAS_NEON) av1_filter_intra_predictor = av1_filter_intra_predictor_neon;
|
||||
av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_c;
|
||||
if (flags & HAS_NEON) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_neon;
|
||||
av1_highbd_inv_txfm_add_16x32 = av1_highbd_inv_txfm_add_16x32_c;
|
||||
if (flags & HAS_NEON) av1_highbd_inv_txfm_add_16x32 = av1_highbd_inv_txfm_add_16x32_neon;
|
||||
av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
|
||||
if (flags & HAS_NEON) av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_neon;
|
||||
av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_c;
|
||||
if (flags & HAS_NEON) av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_neon;
|
||||
av1_highbd_inv_txfm_add_32x16 = av1_highbd_inv_txfm_add_32x16_c;
|
||||
if (flags & HAS_NEON) av1_highbd_inv_txfm_add_32x16 = av1_highbd_inv_txfm_add_32x16_neon;
|
||||
av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_c;
|
||||
if (flags & HAS_NEON) av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_neon;
|
||||
av1_highbd_inv_txfm_add_32x64 = av1_highbd_inv_txfm_add_32x64_c;
|
||||
if (flags & HAS_NEON) av1_highbd_inv_txfm_add_32x64 = av1_highbd_inv_txfm_add_32x64_neon;
|
||||
av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
|
||||
if (flags & HAS_NEON) av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_neon;
|
||||
av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_c;
|
||||
if (flags & HAS_NEON) av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_neon;
|
||||
av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
|
||||
if (flags & HAS_NEON) av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_neon;
|
||||
av1_highbd_inv_txfm_add_64x32 = av1_highbd_inv_txfm_add_64x32_c;
|
||||
if (flags & HAS_NEON) av1_highbd_inv_txfm_add_64x32 = av1_highbd_inv_txfm_add_64x32_neon;
|
||||
av1_highbd_inv_txfm_add_64x64 = av1_highbd_inv_txfm_add_64x64_c;
|
||||
if (flags & HAS_NEON) av1_highbd_inv_txfm_add_64x64 = av1_highbd_inv_txfm_add_64x64_neon;
|
||||
av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_c;
|
||||
if (flags & HAS_NEON) av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_neon;
|
||||
av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
|
||||
if (flags & HAS_NEON) av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_neon;
|
||||
av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
|
||||
if (flags & HAS_NEON) av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_neon;
|
||||
av1_inv_txfm2d_add_16x32 = av1_inv_txfm2d_add_16x32_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_16x32 = av1_inv_txfm2d_add_16x32_neon;
|
||||
av1_inv_txfm2d_add_16x4 = av1_inv_txfm2d_add_16x4_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_16x4 = av1_inv_txfm2d_add_16x4_neon;
|
||||
av1_inv_txfm2d_add_16x64 = av1_inv_txfm2d_add_16x64_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_16x64 = av1_inv_txfm2d_add_16x64_neon;
|
||||
av1_inv_txfm2d_add_16x8 = av1_inv_txfm2d_add_16x8_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_16x8 = av1_inv_txfm2d_add_16x8_neon;
|
||||
av1_inv_txfm2d_add_32x16 = av1_inv_txfm2d_add_32x16_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_32x16 = av1_inv_txfm2d_add_32x16_neon;
|
||||
av1_inv_txfm2d_add_32x32 = av1_inv_txfm2d_add_32x32_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_32x32 = av1_inv_txfm2d_add_32x32_neon;
|
||||
av1_inv_txfm2d_add_32x64 = av1_inv_txfm2d_add_32x64_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_32x64 = av1_inv_txfm2d_add_32x64_neon;
|
||||
av1_inv_txfm2d_add_32x8 = av1_inv_txfm2d_add_32x8_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_32x8 = av1_inv_txfm2d_add_32x8_neon;
|
||||
av1_inv_txfm2d_add_4x16 = av1_inv_txfm2d_add_4x16_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_4x16 = av1_inv_txfm2d_add_4x16_neon;
|
||||
av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_neon;
|
||||
av1_inv_txfm2d_add_4x8 = av1_inv_txfm2d_add_4x8_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_4x8 = av1_inv_txfm2d_add_4x8_neon;
|
||||
av1_inv_txfm2d_add_64x16 = av1_inv_txfm2d_add_64x16_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_64x16 = av1_inv_txfm2d_add_64x16_neon;
|
||||
av1_inv_txfm2d_add_64x32 = av1_inv_txfm2d_add_64x32_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_64x32 = av1_inv_txfm2d_add_64x32_neon;
|
||||
av1_inv_txfm2d_add_64x64 = av1_inv_txfm2d_add_64x64_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_64x64 = av1_inv_txfm2d_add_64x64_neon;
|
||||
av1_inv_txfm2d_add_8x16 = av1_inv_txfm2d_add_8x16_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_8x16 = av1_inv_txfm2d_add_8x16_neon;
|
||||
av1_inv_txfm2d_add_8x32 = av1_inv_txfm2d_add_8x32_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_8x32 = av1_inv_txfm2d_add_8x32_neon;
|
||||
av1_inv_txfm2d_add_8x4 = av1_inv_txfm2d_add_8x4_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_8x4 = av1_inv_txfm2d_add_8x4_neon;
|
||||
av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_neon;
|
||||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm_add = av1_inv_txfm_add_neon;
|
||||
av1_resize_and_extend_frame = av1_resize_and_extend_frame_c;
|
||||
if (flags & HAS_NEON) av1_resize_and_extend_frame = av1_resize_and_extend_frame_neon;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_NEON) av1_round_shift_array = av1_round_shift_array_neon;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_NEON) av1_selfguided_restoration = av1_selfguided_restoration_neon;
|
||||
av1_warp_affine = av1_warp_affine_c;
|
||||
if (flags & HAS_NEON) av1_warp_affine = av1_warp_affine_neon;
|
||||
av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_c;
|
||||
if (flags & HAS_NEON) av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_neon;
|
||||
cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_c;
|
||||
if (flags & HAS_NEON) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_neon;
|
||||
cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_c;
|
||||
if (flags & HAS_NEON) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_neon;
|
||||
cdef_filter_16_0 = cdef_filter_16_0_c;
|
||||
if (flags & HAS_NEON) cdef_filter_16_0 = cdef_filter_16_0_neon;
|
||||
cdef_filter_16_1 = cdef_filter_16_1_c;
|
||||
if (flags & HAS_NEON) cdef_filter_16_1 = cdef_filter_16_1_neon;
|
||||
cdef_filter_16_2 = cdef_filter_16_2_c;
|
||||
if (flags & HAS_NEON) cdef_filter_16_2 = cdef_filter_16_2_neon;
|
||||
cdef_filter_16_3 = cdef_filter_16_3_c;
|
||||
if (flags & HAS_NEON) cdef_filter_16_3 = cdef_filter_16_3_neon;
|
||||
cdef_filter_8_0 = cdef_filter_8_0_c;
|
||||
if (flags & HAS_NEON) cdef_filter_8_0 = cdef_filter_8_0_neon;
|
||||
cdef_filter_8_1 = cdef_filter_8_1_c;
|
||||
if (flags & HAS_NEON) cdef_filter_8_1 = cdef_filter_8_1_neon;
|
||||
cdef_filter_8_2 = cdef_filter_8_2_c;
|
||||
if (flags & HAS_NEON) cdef_filter_8_2 = cdef_filter_8_2_neon;
|
||||
cdef_filter_8_3 = cdef_filter_8_3_c;
|
||||
if (flags & HAS_NEON) cdef_filter_8_3 = cdef_filter_8_3_neon;
|
||||
cdef_find_dir = cdef_find_dir_c;
|
||||
if (flags & HAS_NEON) cdef_find_dir = cdef_find_dir_neon;
|
||||
cdef_find_dir_dual = cdef_find_dir_dual_c;
|
||||
if (flags & HAS_NEON) cdef_find_dir_dual = cdef_find_dir_dual_neon;
|
||||
cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_c;
|
||||
if (flags & HAS_NEON) cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_neon;
|
||||
cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_c;
|
||||
if (flags & HAS_NEON) cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_neon;
|
||||
cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_c;
|
||||
if (flags & HAS_NEON) cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_neon;
|
||||
cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_c;
|
||||
if (flags & HAS_NEON) cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_neon;
|
||||
cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_c;
|
||||
if (flags & HAS_NEON) cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_neon;
|
||||
cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_c;
|
||||
if (flags & HAS_NEON) cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_neon;
|
||||
cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_c;
|
||||
if (flags & HAS_NEON) cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_neon;
|
||||
cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_c;
|
||||
if (flags & HAS_NEON) cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_neon;
|
||||
cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_c;
|
||||
if (flags & HAS_NEON) cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_neon;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,90 +0,0 @@
|
||||
;
|
||||
; Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
;
|
||||
; This source code is subject to the terms of the BSD 2 Clause License and
|
||||
; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
; was not distributed with this source code in the LICENSE file, you can
|
||||
; obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
; Media Patent License 1.0 was not distributed with this source code in the
|
||||
; PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
;
|
||||
|
||||
ARCH_ARM equ 0
|
||||
ARCH_MIPS equ 0
|
||||
ARCH_PPC equ 0
|
||||
ARCH_X86 equ 1
|
||||
ARCH_X86_64 equ 0
|
||||
CONFIG_ACCOUNTING equ 0
|
||||
CONFIG_ANALYZER equ 0
|
||||
CONFIG_AV1_DECODER equ 1
|
||||
CONFIG_AV1_ENCODER equ 0
|
||||
CONFIG_AV1_HIGHBITDEPTH equ 1
|
||||
CONFIG_AV1_TEMPORAL_DENOISING equ 0
|
||||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITRATE_ACCURACY equ 0
|
||||
CONFIG_BITRATE_ACCURACY_BL equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_COMPONENT_TIMING equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_EXCLUDE_SIMD_MISMATCH equ 0
|
||||
CONFIG_FPMT_TEST equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE_2 equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
CONFIG_INTER_STATS_ONLY equ 0
|
||||
CONFIG_LIBYUV equ 0
|
||||
CONFIG_MAX_DECODE_PROFILE equ 2
|
||||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NN_V2 equ 0
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_OPTICAL_FLOW_API equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PARTITION_SEARCH_ORDER equ 0
|
||||
CONFIG_PIC equ 1
|
||||
CONFIG_RATECTRL_LOG equ 0
|
||||
CONFIG_RD_COMMAND equ 0
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REALTIME_ONLY equ 0
|
||||
CONFIG_RT_ML_PARTITIONING equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_TFLITE equ 0
|
||||
CONFIG_THREE_PASS equ 0
|
||||
CONFIG_TUNE_BUTTERAUGLI equ 0
|
||||
CONFIG_TUNE_VMAF equ 0
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
DECODE_WIDTH_LIMIT equ 0
|
||||
FORCE_HIGHBITDEPTH_DECODING equ 0
|
||||
HAVE_AVX equ 1
|
||||
HAVE_AVX2 equ 1
|
||||
HAVE_DSPR2 equ 0
|
||||
HAVE_FEXCEPT equ 1
|
||||
HAVE_MIPS32 equ 0
|
||||
HAVE_MIPS64 equ 0
|
||||
HAVE_MMX equ 1
|
||||
HAVE_MSA equ 0
|
||||
HAVE_NEON equ 0
|
||||
HAVE_SSE equ 1
|
||||
HAVE_SSE2 equ 1
|
||||
HAVE_SSE3 equ 1
|
||||
HAVE_SSE4_1 equ 1
|
||||
HAVE_SSE4_2 equ 1
|
||||
HAVE_SSSE3 equ 1
|
||||
HAVE_VSX equ 0
|
||||
HAVE_WXWIDGETS equ 0
|
||||
STATIC_LINK_JXL equ 0
|
||||
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
#ifndef AOM_CONFIG_H_
|
||||
#define AOM_CONFIG_H_
|
||||
|
||||
#define ARCH_ARM 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_X86 1
|
||||
#define ARCH_X86_64 0
|
||||
#define CONFIG_ACCOUNTING 0
|
||||
#define CONFIG_ANALYZER 0
|
||||
#define CONFIG_AV1_DECODER 1
|
||||
#define CONFIG_AV1_ENCODER 0
|
||||
#define CONFIG_AV1_HIGHBITDEPTH 1
|
||||
#define CONFIG_AV1_TEMPORAL_DENOISING 0
|
||||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITRATE_ACCURACY 0
|
||||
#define CONFIG_BITRATE_ACCURACY_BL 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_COMPONENT_TIMING 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_EXCLUDE_SIMD_MISMATCH 0
|
||||
#define CONFIG_FPMT_TEST 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE_2 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
#define CONFIG_INTER_STATS_ONLY 0
|
||||
#define CONFIG_LIBYUV 0
|
||||
#define CONFIG_MAX_DECODE_PROFILE 2
|
||||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NN_V2 0
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_OPTICAL_FLOW_API 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PARTITION_SEARCH_ORDER 0
|
||||
#define CONFIG_PIC 1
|
||||
#define CONFIG_RATECTRL_LOG 0
|
||||
#define CONFIG_RD_COMMAND 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REALTIME_ONLY 0
|
||||
#define CONFIG_RT_ML_PARTITIONING 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_TFLITE 0
|
||||
#define CONFIG_THREE_PASS 0
|
||||
#define CONFIG_TUNE_BUTTERAUGLI 0
|
||||
#define CONFIG_TUNE_VMAF 0
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
#define DECODE_WIDTH_LIMIT 0
|
||||
#define FORCE_HIGHBITDEPTH_DECODING 0
|
||||
#define HAVE_AVX 1
|
||||
#define HAVE_AVX2 1
|
||||
#define HAVE_DSPR2 0
|
||||
#define HAVE_FEXCEPT 1
|
||||
#define HAVE_MIPS32 0
|
||||
#define HAVE_MIPS64 0
|
||||
#define HAVE_MMX 1
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_NEON 0
|
||||
#define HAVE_SSE 1
|
||||
#define HAVE_SSE2 1
|
||||
#define HAVE_SSE3 1
|
||||
#define HAVE_SSE4_1 1
|
||||
#define HAVE_SSE4_2 1
|
||||
#define HAVE_SSSE3 1
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INLINE inline
|
||||
#define STATIC_LINK_JXL 0
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,100 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AOM_SCALE_RTCD_H_
|
||||
#define AOM_SCALE_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
struct yv12_buffer_config;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void aom_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_borders aom_extend_frame_borders_c
|
||||
|
||||
void aom_extend_frame_borders_y_c(struct yv12_buffer_config *ybf);
|
||||
#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c
|
||||
|
||||
void aom_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c
|
||||
|
||||
void aom_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c
|
||||
|
||||
void aom_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c
|
||||
|
||||
void aom_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_i_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c
|
||||
|
||||
void aom_vertical_band_5_3_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c
|
||||
|
||||
void aom_vertical_band_5_4_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c
|
||||
|
||||
void aom_yv12_copy_frame_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, const int num_planes);
|
||||
#define aom_yv12_copy_frame aom_yv12_copy_frame_c
|
||||
|
||||
void aom_yv12_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_u aom_yv12_copy_u_c
|
||||
|
||||
void aom_yv12_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_v aom_yv12_copy_v_c
|
||||
|
||||
void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
|
||||
#define aom_yv12_copy_y aom_yv12_copy_y_c
|
||||
|
||||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
int aom_yv12_realloc_with_new_border_c(struct yv12_buffer_config *ybf, int new_border, int byte_alignment, int num_planes);
|
||||
#define aom_yv12_realloc_with_new_border aom_yv12_realloc_with_new_border_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/x86.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = x86_simd_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,797 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AV1_RTCD_H_
|
||||
#define AV1_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
/*
|
||||
* AV1
|
||||
*/
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom_dsp/odintrin.h"
|
||||
#include "aom_dsp/txfm_common.h"
|
||||
#include "av1/common/common.h"
|
||||
#include "av1/common/enums.h"
|
||||
#include "av1/common/quant_common.h"
|
||||
#include "av1/common/filter.h"
|
||||
#include "av1/common/convolve.h"
|
||||
#include "av1/common/av1_txfm.h"
|
||||
#include "av1/common/restoration.h"
|
||||
|
||||
struct macroblockd;
|
||||
|
||||
/* Encoder forward decls */
|
||||
struct macroblock;
|
||||
struct txfm_param;
|
||||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
enum { NONE, RELU, SOFTSIGN, SIGMOID } UENUM1BYTE(ACTIVATION);
|
||||
#if CONFIG_NN_V2
|
||||
enum { SOFTMAX_CROSS_ENTROPY } UENUM1BYTE(LOSS);
|
||||
struct NN_CONFIG_V2;
|
||||
typedef struct NN_CONFIG_V2 NN_CONFIG_V2;
|
||||
struct FC_LAYER;
|
||||
typedef struct FC_LAYER FC_LAYER;
|
||||
#endif // CONFIG_NN_V2
|
||||
|
||||
struct CNN_CONFIG;
|
||||
typedef struct CNN_CONFIG CNN_CONFIG;
|
||||
struct CNN_LAYER_CONFIG;
|
||||
typedef struct CNN_LAYER_CONFIG CNN_LAYER_CONFIG;
|
||||
struct CNN_THREAD_DATA;
|
||||
typedef struct CNN_THREAD_DATA CNN_THREAD_DATA;
|
||||
struct CNN_BRANCH_CONFIG;
|
||||
typedef struct CNN_BRANCH_CONFIG CNN_BRANCH_CONFIG;
|
||||
struct CNN_MULTI_OUT;
|
||||
typedef struct CNN_MULTI_OUT CNN_MULTI_OUT;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
#if CONFIG_AV1_HIGHBITDEPTH
|
||||
typedef void (*cfl_subsample_hbd_fn)(const uint16_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
typedef void (*cfl_predict_hbd_fn)(const int16_t *src, uint16_t *dst,
|
||||
int dst_stride, int alpha_q3, int bd);
|
||||
#endif
|
||||
|
||||
typedef void (*cfl_subtract_average_fn)(const uint16_t *src, int16_t *dst);
|
||||
|
||||
typedef void (*cfl_predict_lbd_fn)(const int16_t *src, uint8_t *dst,
|
||||
int dst_stride, int alpha_q3);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void av1_apply_selfguided_restoration_c(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
void av1_apply_selfguided_restoration_sse4_1(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
void av1_apply_selfguided_restoration_avx2(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
RTCD_EXTERN void (*av1_apply_selfguided_restoration)(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
void av1_build_compound_diffwtd_mask_sse4_1(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
void av1_build_compound_diffwtd_mask_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_d16_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
void av1_build_compound_diffwtd_mask_d16_sse4_1(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
void av1_build_compound_diffwtd_mask_d16_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask_d16)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_highbd_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
void av1_build_compound_diffwtd_mask_highbd_ssse3(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
void av1_build_compound_diffwtd_mask_highbd_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask_highbd)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
|
||||
int64_t av1_calc_frame_error_c(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
int64_t av1_calc_frame_error_sse2(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
int64_t av1_calc_frame_error_avx2(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
RTCD_EXTERN int64_t (*av1_calc_frame_error)(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
|
||||
void av1_convolve_2d_scale_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_scale_sse4_1(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_2d_scale)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_2d_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_2d_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_horiz_rs_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
void av1_convolve_horiz_rs_sse4_1(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
RTCD_EXTERN void (*av1_convolve_horiz_rs)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
|
||||
void av1_convolve_x_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_x_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_x_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_x_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_y_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
void av1_convolve_y_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
void av1_convolve_y_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
void av1_dr_prediction_z1_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
void av1_dr_prediction_z1_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z2_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z2_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z3_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_sse4_1(uint8_t *p, int sz, int strength);
|
||||
RTCD_EXTERN void (*av1_filter_intra_edge)(uint8_t *p, int sz, int strength);
|
||||
|
||||
void av1_filter_intra_edge_high_c(uint16_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_high_sse4_1(uint16_t *p, int sz, int strength);
|
||||
RTCD_EXTERN void (*av1_filter_intra_edge_high)(uint16_t *p, int sz, int strength);
|
||||
|
||||
void av1_filter_intra_predictor_c(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
void av1_filter_intra_predictor_sse4_1(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
RTCD_EXTERN void (*av1_filter_intra_predictor)(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
|
||||
void av1_highbd_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8 av1_highbd_convolve8_c
|
||||
|
||||
void av1_highbd_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_c
|
||||
|
||||
void av1_highbd_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_c
|
||||
|
||||
void av1_highbd_convolve_2d_scale_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_scale_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_2d_scale)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_2d_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_2d_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_avg av1_highbd_convolve_avg_c
|
||||
|
||||
void av1_highbd_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_copy av1_highbd_convolve_copy_c
|
||||
|
||||
void av1_highbd_convolve_horiz_rs_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
void av1_highbd_convolve_horiz_rs_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_horiz_rs)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
|
||||
void av1_highbd_convolve_x_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_x_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_x_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_x_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_y_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
void av1_highbd_convolve_y_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
void av1_highbd_convolve_y_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_y_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z1_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z1)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z2_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z2)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z3)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_avx2(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x64 av1_highbd_inv_txfm_add_16x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x64 av1_highbd_inv_txfm_add_32x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x16)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x16 av1_highbd_inv_txfm_add_64x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x32 av1_highbd_inv_txfm_add_64x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x64 av1_highbd_inv_txfm_add_64x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x8_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
void av1_highbd_iwht4x4_16_add_sse4_1(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_iwht4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
|
||||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_highbd_warp_affine_sse4_1(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_highbd_warp_affine_avx2(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
|
||||
void av1_highbd_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_wiener_convolve_add_src_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_wiener_convolve_add_src_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_wiener_convolve_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x4 av1_inv_txfm2d_add_16x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x64 av1_inv_txfm2d_add_16x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x64 av1_inv_txfm2d_add_32x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x8 av1_inv_txfm2d_add_32x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x16 av1_inv_txfm2d_add_4x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_4x4_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x4)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x16 av1_inv_txfm2d_add_64x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x32 av1_inv_txfm2d_add_64x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x32 av1_inv_txfm2d_add_8x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_8x8_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x8)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_inv_txfm_add_ssse3(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_resize_and_extend_frame_c(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
void av1_resize_and_extend_frame_ssse3(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
RTCD_EXTERN void (*av1_resize_and_extend_frame)(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
int av1_selfguided_restoration_sse4_1(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
int av1_selfguided_restoration_avx2(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
RTCD_EXTERN int (*av1_selfguided_restoration)(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
|
||||
void av1_upsample_intra_edge_c(uint8_t *p, int sz);
|
||||
void av1_upsample_intra_edge_sse4_1(uint8_t *p, int sz);
|
||||
RTCD_EXTERN void (*av1_upsample_intra_edge)(uint8_t *p, int sz);
|
||||
|
||||
void av1_upsample_intra_edge_high_c(uint16_t *p, int sz, int bd);
|
||||
void av1_upsample_intra_edge_high_sse4_1(uint16_t *p, int sz, int bd);
|
||||
RTCD_EXTERN void (*av1_upsample_intra_edge_high)(uint16_t *p, int sz, int bd);
|
||||
|
||||
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_warp_affine_sse4_1(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_warp_affine_avx2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
|
||||
void av1_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
void av1_wiener_convolve_add_src_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
void av1_wiener_convolve_add_src_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_copy_rect8_16bit_to_16bit_c(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_16bit_to_16bit)(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_copy_rect8_8bit_to_16bit_c(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_8bit_to_16bit)(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_filter_16_0_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_0)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_1_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_1)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_2_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_2)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_3_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_3)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_0_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_0)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_1_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_1)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_2_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_2)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_3_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_3)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_ssse3(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse4_1(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_avx2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
RTCD_EXTERN int (*cdef_find_dir)(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
||||
void cdef_find_dir_dual_c(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_sse2(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_ssse3(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_sse4_1(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_avx2(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
RTCD_EXTERN void (*cdef_find_dir_dual)(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_420_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_420_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_422_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_422_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_444_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_444_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_ssse3(TX_SIZE tx_size);
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_hbd_fn (*cfl_get_predict_hbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_ssse3(TX_SIZE tx_size);
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_lbd_fn (*cfl_get_predict_lbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_c(TX_SIZE tx_size);
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_sse2(TX_SIZE tx_size);
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subtract_average_fn (*cfl_get_subtract_average_fn)(TX_SIZE tx_size);
|
||||
|
||||
void av1_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/x86.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = x86_simd_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_avx2;
|
||||
av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_c;
|
||||
if (flags & HAS_SSE4_1) av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_avx2;
|
||||
av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_c;
|
||||
if (flags & HAS_SSE4_1) av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_avx2;
|
||||
av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_c;
|
||||
if (flags & HAS_SSSE3) av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_ssse3;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_avx2;
|
||||
av1_calc_frame_error = av1_calc_frame_error_c;
|
||||
if (flags & HAS_SSE2) av1_calc_frame_error = av1_calc_frame_error_sse2;
|
||||
if (flags & HAS_AVX2) av1_calc_frame_error = av1_calc_frame_error_avx2;
|
||||
av1_convolve_2d_scale = av1_convolve_2d_scale_c;
|
||||
if (flags & HAS_SSE4_1) av1_convolve_2d_scale = av1_convolve_2d_scale_sse4_1;
|
||||
av1_convolve_2d_sr = av1_convolve_2d_sr_c;
|
||||
if (flags & HAS_SSE2) av1_convolve_2d_sr = av1_convolve_2d_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_2d_sr = av1_convolve_2d_sr_avx2;
|
||||
av1_convolve_horiz_rs = av1_convolve_horiz_rs_c;
|
||||
if (flags & HAS_SSE4_1) av1_convolve_horiz_rs = av1_convolve_horiz_rs_sse4_1;
|
||||
av1_convolve_x_sr = av1_convolve_x_sr_c;
|
||||
if (flags & HAS_SSE2) av1_convolve_x_sr = av1_convolve_x_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_x_sr = av1_convolve_x_sr_avx2;
|
||||
av1_convolve_y_sr = av1_convolve_y_sr_c;
|
||||
if (flags & HAS_SSE2) av1_convolve_y_sr = av1_convolve_y_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_y_sr = av1_convolve_y_sr_avx2;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_sse2;
|
||||
if (flags & HAS_SSSE3) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_avx2;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_avx2;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_avx2;
|
||||
av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z1 = av1_dr_prediction_z1_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
|
||||
av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z2 = av1_dr_prediction_z2_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
|
||||
av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z3 = av1_dr_prediction_z3_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
|
||||
av1_filter_intra_edge = av1_filter_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
|
||||
av1_filter_intra_edge_high = av1_filter_intra_edge_high_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge_high = av1_filter_intra_edge_high_sse4_1;
|
||||
av1_filter_intra_predictor = av1_filter_intra_predictor_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_predictor = av1_filter_intra_predictor_sse4_1;
|
||||
av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_sse4_1;
|
||||
av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_avx2;
|
||||
av1_highbd_convolve_horiz_rs = av1_highbd_convolve_horiz_rs_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_convolve_horiz_rs = av1_highbd_convolve_horiz_rs_sse4_1;
|
||||
av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_avx2;
|
||||
av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_avx2;
|
||||
av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_avx2;
|
||||
av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
|
||||
av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_avx2;
|
||||
av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
|
||||
av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
|
||||
av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
|
||||
av1_highbd_iwht4x4_16_add = av1_highbd_iwht4x4_16_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_iwht4x4_16_add = av1_highbd_iwht4x4_16_add_sse4_1;
|
||||
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_warp_affine = av1_highbd_warp_affine_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_warp_affine = av1_highbd_warp_affine_avx2;
|
||||
av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_avx2;
|
||||
av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_sse4_1;
|
||||
av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_sse4_1;
|
||||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_SSSE3) av1_inv_txfm_add = av1_inv_txfm_add_ssse3;
|
||||
if (flags & HAS_AVX2) av1_inv_txfm_add = av1_inv_txfm_add_avx2;
|
||||
av1_resize_and_extend_frame = av1_resize_and_extend_frame_c;
|
||||
if (flags & HAS_SSSE3) av1_resize_and_extend_frame = av1_resize_and_extend_frame_ssse3;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_selfguided_restoration = av1_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_selfguided_restoration = av1_selfguided_restoration_avx2;
|
||||
av1_upsample_intra_edge = av1_upsample_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_upsample_intra_edge = av1_upsample_intra_edge_sse4_1;
|
||||
av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_c;
|
||||
if (flags & HAS_SSE4_1) av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_sse4_1;
|
||||
av1_warp_affine = av1_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_warp_affine = av1_warp_affine_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_warp_affine = av1_warp_affine_avx2;
|
||||
av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_c;
|
||||
if (flags & HAS_SSE2) av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_sse2;
|
||||
if (flags & HAS_AVX2) av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_avx2;
|
||||
cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_c;
|
||||
if (flags & HAS_SSE2) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_avx2;
|
||||
cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_c;
|
||||
if (flags & HAS_SSE2) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_avx2;
|
||||
cdef_filter_16_0 = cdef_filter_16_0_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_16_0 = cdef_filter_16_0_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_0 = cdef_filter_16_0_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_0 = cdef_filter_16_0_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_0 = cdef_filter_16_0_avx2;
|
||||
cdef_filter_16_1 = cdef_filter_16_1_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_16_1 = cdef_filter_16_1_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_1 = cdef_filter_16_1_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_1 = cdef_filter_16_1_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_1 = cdef_filter_16_1_avx2;
|
||||
cdef_filter_16_2 = cdef_filter_16_2_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_16_2 = cdef_filter_16_2_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_2 = cdef_filter_16_2_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_2 = cdef_filter_16_2_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_2 = cdef_filter_16_2_avx2;
|
||||
cdef_filter_16_3 = cdef_filter_16_3_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_16_3 = cdef_filter_16_3_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_3 = cdef_filter_16_3_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_3 = cdef_filter_16_3_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_3 = cdef_filter_16_3_avx2;
|
||||
cdef_filter_8_0 = cdef_filter_8_0_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_8_0 = cdef_filter_8_0_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_0 = cdef_filter_8_0_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_0 = cdef_filter_8_0_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_0 = cdef_filter_8_0_avx2;
|
||||
cdef_filter_8_1 = cdef_filter_8_1_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_8_1 = cdef_filter_8_1_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_1 = cdef_filter_8_1_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_1 = cdef_filter_8_1_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_1 = cdef_filter_8_1_avx2;
|
||||
cdef_filter_8_2 = cdef_filter_8_2_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_8_2 = cdef_filter_8_2_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_2 = cdef_filter_8_2_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_2 = cdef_filter_8_2_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_2 = cdef_filter_8_2_avx2;
|
||||
cdef_filter_8_3 = cdef_filter_8_3_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_8_3 = cdef_filter_8_3_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_3 = cdef_filter_8_3_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_3 = cdef_filter_8_3_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_3 = cdef_filter_8_3_avx2;
|
||||
cdef_find_dir = cdef_find_dir_c;
|
||||
if (flags & HAS_SSE2) cdef_find_dir = cdef_find_dir_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_find_dir = cdef_find_dir_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_find_dir = cdef_find_dir_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_find_dir = cdef_find_dir_avx2;
|
||||
cdef_find_dir_dual = cdef_find_dir_dual_c;
|
||||
if (flags & HAS_SSE2) cdef_find_dir_dual = cdef_find_dir_dual_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_find_dir_dual = cdef_find_dir_dual_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_find_dir_dual = cdef_find_dir_dual_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_find_dir_dual = cdef_find_dir_dual_avx2;
|
||||
cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_avx2;
|
||||
cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_avx2;
|
||||
cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_avx2;
|
||||
cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_avx2;
|
||||
cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_avx2;
|
||||
cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_avx2;
|
||||
cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_avx2;
|
||||
cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_avx2;
|
||||
cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_c;
|
||||
if (flags & HAS_SSE2) cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_sse2;
|
||||
if (flags & HAS_AVX2) cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_avx2;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,90 +0,0 @@
|
||||
;
|
||||
; Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
;
|
||||
; This source code is subject to the terms of the BSD 2 Clause License and
|
||||
; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
; was not distributed with this source code in the LICENSE file, you can
|
||||
; obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
; Media Patent License 1.0 was not distributed with this source code in the
|
||||
; PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
;
|
||||
|
||||
ARCH_ARM equ 0
|
||||
ARCH_MIPS equ 0
|
||||
ARCH_PPC equ 0
|
||||
ARCH_X86 equ 0
|
||||
ARCH_X86_64 equ 1
|
||||
CONFIG_ACCOUNTING equ 0
|
||||
CONFIG_ANALYZER equ 0
|
||||
CONFIG_AV1_DECODER equ 1
|
||||
CONFIG_AV1_ENCODER equ 0
|
||||
CONFIG_AV1_HIGHBITDEPTH equ 1
|
||||
CONFIG_AV1_TEMPORAL_DENOISING equ 0
|
||||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITRATE_ACCURACY equ 0
|
||||
CONFIG_BITRATE_ACCURACY_BL equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_COMPONENT_TIMING equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_EXCLUDE_SIMD_MISMATCH equ 0
|
||||
CONFIG_FPMT_TEST equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE_2 equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
CONFIG_INTER_STATS_ONLY equ 0
|
||||
CONFIG_LIBYUV equ 0
|
||||
CONFIG_MAX_DECODE_PROFILE equ 2
|
||||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NN_V2 equ 0
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_OPTICAL_FLOW_API equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PARTITION_SEARCH_ORDER equ 0
|
||||
CONFIG_PIC equ 0
|
||||
CONFIG_RATECTRL_LOG equ 0
|
||||
CONFIG_RD_COMMAND equ 0
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REALTIME_ONLY equ 0
|
||||
CONFIG_RT_ML_PARTITIONING equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_TFLITE equ 0
|
||||
CONFIG_THREE_PASS equ 0
|
||||
CONFIG_TUNE_BUTTERAUGLI equ 0
|
||||
CONFIG_TUNE_VMAF equ 0
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
DECODE_WIDTH_LIMIT equ 0
|
||||
FORCE_HIGHBITDEPTH_DECODING equ 0
|
||||
HAVE_AVX equ 1
|
||||
HAVE_AVX2 equ 1
|
||||
HAVE_DSPR2 equ 0
|
||||
HAVE_FEXCEPT equ 1
|
||||
HAVE_MIPS32 equ 0
|
||||
HAVE_MIPS64 equ 0
|
||||
HAVE_MMX equ 1
|
||||
HAVE_MSA equ 0
|
||||
HAVE_NEON equ 0
|
||||
HAVE_SSE equ 1
|
||||
HAVE_SSE2 equ 1
|
||||
HAVE_SSE3 equ 1
|
||||
HAVE_SSE4_1 equ 1
|
||||
HAVE_SSE4_2 equ 1
|
||||
HAVE_SSSE3 equ 1
|
||||
HAVE_VSX equ 0
|
||||
HAVE_WXWIDGETS equ 0
|
||||
STATIC_LINK_JXL equ 0
|
||||
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
#ifndef AOM_CONFIG_H_
|
||||
#define AOM_CONFIG_H_
|
||||
|
||||
#define ARCH_ARM 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_X86 0
|
||||
#define ARCH_X86_64 1
|
||||
#define CONFIG_ACCOUNTING 0
|
||||
#define CONFIG_ANALYZER 0
|
||||
#define CONFIG_AV1_DECODER 1
|
||||
#define CONFIG_AV1_ENCODER 0
|
||||
#define CONFIG_AV1_HIGHBITDEPTH 1
|
||||
#define CONFIG_AV1_TEMPORAL_DENOISING 0
|
||||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITRATE_ACCURACY 0
|
||||
#define CONFIG_BITRATE_ACCURACY_BL 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_COMPONENT_TIMING 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_EXCLUDE_SIMD_MISMATCH 0
|
||||
#define CONFIG_FPMT_TEST 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE_2 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
#define CONFIG_INTER_STATS_ONLY 0
|
||||
#define CONFIG_LIBYUV 0
|
||||
#define CONFIG_MAX_DECODE_PROFILE 2
|
||||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NN_V2 0
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_OPTICAL_FLOW_API 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PARTITION_SEARCH_ORDER 0
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_RATECTRL_LOG 0
|
||||
#define CONFIG_RD_COMMAND 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REALTIME_ONLY 0
|
||||
#define CONFIG_RT_ML_PARTITIONING 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_TFLITE 0
|
||||
#define CONFIG_THREE_PASS 0
|
||||
#define CONFIG_TUNE_BUTTERAUGLI 0
|
||||
#define CONFIG_TUNE_VMAF 0
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
#define DECODE_WIDTH_LIMIT 0
|
||||
#define FORCE_HIGHBITDEPTH_DECODING 0
|
||||
#define HAVE_AVX 1
|
||||
#define HAVE_AVX2 1
|
||||
#define HAVE_DSPR2 0
|
||||
#define HAVE_FEXCEPT 1
|
||||
#define HAVE_MIPS32 0
|
||||
#define HAVE_MIPS64 0
|
||||
#define HAVE_MMX 1
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_NEON 0
|
||||
#define HAVE_SSE 1
|
||||
#define HAVE_SSE2 1
|
||||
#define HAVE_SSE3 1
|
||||
#define HAVE_SSE4_1 1
|
||||
#define HAVE_SSE4_2 1
|
||||
#define HAVE_SSSE3 1
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INLINE inline
|
||||
#define STATIC_LINK_JXL 0
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,100 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AOM_SCALE_RTCD_H_
|
||||
#define AOM_SCALE_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
struct yv12_buffer_config;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void aom_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_borders aom_extend_frame_borders_c
|
||||
|
||||
void aom_extend_frame_borders_y_c(struct yv12_buffer_config *ybf);
|
||||
#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c
|
||||
|
||||
void aom_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c
|
||||
|
||||
void aom_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c
|
||||
|
||||
void aom_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c
|
||||
|
||||
void aom_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_i_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c
|
||||
|
||||
void aom_vertical_band_5_3_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c
|
||||
|
||||
void aom_vertical_band_5_4_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c
|
||||
|
||||
void aom_yv12_copy_frame_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, const int num_planes);
|
||||
#define aom_yv12_copy_frame aom_yv12_copy_frame_c
|
||||
|
||||
void aom_yv12_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_u aom_yv12_copy_u_c
|
||||
|
||||
void aom_yv12_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_v aom_yv12_copy_v_c
|
||||
|
||||
void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
|
||||
#define aom_yv12_copy_y aom_yv12_copy_y_c
|
||||
|
||||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
int aom_yv12_realloc_with_new_border_c(struct yv12_buffer_config *ybf, int new_border, int byte_alignment, int num_planes);
|
||||
#define aom_yv12_realloc_with_new_border aom_yv12_realloc_with_new_border_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/x86.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = x86_simd_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,778 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AV1_RTCD_H_
|
||||
#define AV1_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
/*
|
||||
* AV1
|
||||
*/
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom_dsp/odintrin.h"
|
||||
#include "aom_dsp/txfm_common.h"
|
||||
#include "av1/common/common.h"
|
||||
#include "av1/common/enums.h"
|
||||
#include "av1/common/quant_common.h"
|
||||
#include "av1/common/filter.h"
|
||||
#include "av1/common/convolve.h"
|
||||
#include "av1/common/av1_txfm.h"
|
||||
#include "av1/common/restoration.h"
|
||||
|
||||
struct macroblockd;
|
||||
|
||||
/* Encoder forward decls */
|
||||
struct macroblock;
|
||||
struct txfm_param;
|
||||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
enum { NONE, RELU, SOFTSIGN, SIGMOID } UENUM1BYTE(ACTIVATION);
|
||||
#if CONFIG_NN_V2
|
||||
enum { SOFTMAX_CROSS_ENTROPY } UENUM1BYTE(LOSS);
|
||||
struct NN_CONFIG_V2;
|
||||
typedef struct NN_CONFIG_V2 NN_CONFIG_V2;
|
||||
struct FC_LAYER;
|
||||
typedef struct FC_LAYER FC_LAYER;
|
||||
#endif // CONFIG_NN_V2
|
||||
|
||||
struct CNN_CONFIG;
|
||||
typedef struct CNN_CONFIG CNN_CONFIG;
|
||||
struct CNN_LAYER_CONFIG;
|
||||
typedef struct CNN_LAYER_CONFIG CNN_LAYER_CONFIG;
|
||||
struct CNN_THREAD_DATA;
|
||||
typedef struct CNN_THREAD_DATA CNN_THREAD_DATA;
|
||||
struct CNN_BRANCH_CONFIG;
|
||||
typedef struct CNN_BRANCH_CONFIG CNN_BRANCH_CONFIG;
|
||||
struct CNN_MULTI_OUT;
|
||||
typedef struct CNN_MULTI_OUT CNN_MULTI_OUT;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
#if CONFIG_AV1_HIGHBITDEPTH
|
||||
typedef void (*cfl_subsample_hbd_fn)(const uint16_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
typedef void (*cfl_predict_hbd_fn)(const int16_t *src, uint16_t *dst,
|
||||
int dst_stride, int alpha_q3, int bd);
|
||||
#endif
|
||||
|
||||
typedef void (*cfl_subtract_average_fn)(const uint16_t *src, int16_t *dst);
|
||||
|
||||
typedef void (*cfl_predict_lbd_fn)(const int16_t *src, uint8_t *dst,
|
||||
int dst_stride, int alpha_q3);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void av1_apply_selfguided_restoration_c(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
void av1_apply_selfguided_restoration_sse4_1(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
void av1_apply_selfguided_restoration_avx2(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
RTCD_EXTERN void (*av1_apply_selfguided_restoration)(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
void av1_build_compound_diffwtd_mask_sse4_1(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
void av1_build_compound_diffwtd_mask_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_d16_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
void av1_build_compound_diffwtd_mask_d16_sse4_1(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
void av1_build_compound_diffwtd_mask_d16_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask_d16)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_highbd_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
void av1_build_compound_diffwtd_mask_highbd_ssse3(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
void av1_build_compound_diffwtd_mask_highbd_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask_highbd)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
|
||||
int64_t av1_calc_frame_error_c(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
int64_t av1_calc_frame_error_sse2(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
int64_t av1_calc_frame_error_avx2(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
RTCD_EXTERN int64_t (*av1_calc_frame_error)(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
|
||||
void av1_convolve_2d_scale_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_scale_sse4_1(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_2d_scale)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_2d_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_2d_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_horiz_rs_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
void av1_convolve_horiz_rs_sse4_1(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
RTCD_EXTERN void (*av1_convolve_horiz_rs)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
|
||||
void av1_convolve_x_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_x_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_x_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_x_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_y_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
void av1_convolve_y_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
void av1_convolve_y_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
void av1_dr_prediction_z1_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
void av1_dr_prediction_z1_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z2_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z2_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z3_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_sse4_1(uint8_t *p, int sz, int strength);
|
||||
RTCD_EXTERN void (*av1_filter_intra_edge)(uint8_t *p, int sz, int strength);
|
||||
|
||||
void av1_filter_intra_edge_high_c(uint16_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_high_sse4_1(uint16_t *p, int sz, int strength);
|
||||
RTCD_EXTERN void (*av1_filter_intra_edge_high)(uint16_t *p, int sz, int strength);
|
||||
|
||||
void av1_filter_intra_predictor_c(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
void av1_filter_intra_predictor_sse4_1(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
RTCD_EXTERN void (*av1_filter_intra_predictor)(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
|
||||
void av1_highbd_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
void av1_highbd_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8 av1_highbd_convolve8_sse2
|
||||
|
||||
void av1_highbd_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
void av1_highbd_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_sse2
|
||||
|
||||
void av1_highbd_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
void av1_highbd_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_sse2
|
||||
|
||||
void av1_highbd_convolve_2d_scale_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_scale_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_2d_scale)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_2d_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_2d_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_avg av1_highbd_convolve_avg_c
|
||||
|
||||
void av1_highbd_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_copy av1_highbd_convolve_copy_c
|
||||
|
||||
void av1_highbd_convolve_horiz_rs_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
void av1_highbd_convolve_horiz_rs_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_horiz_rs)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
|
||||
void av1_highbd_convolve_x_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_x_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_x_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_x_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_y_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
void av1_highbd_convolve_y_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
void av1_highbd_convolve_y_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_y_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z1_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z1)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z2_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z2)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z3)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_avx2(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x64 av1_highbd_inv_txfm_add_16x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x64 av1_highbd_inv_txfm_add_32x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x16)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x16 av1_highbd_inv_txfm_add_64x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x32 av1_highbd_inv_txfm_add_64x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x64 av1_highbd_inv_txfm_add_64x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x8_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
void av1_highbd_iwht4x4_16_add_sse4_1(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_iwht4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
|
||||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_highbd_warp_affine_sse4_1(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_highbd_warp_affine_avx2(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
|
||||
void av1_highbd_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_wiener_convolve_add_src_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_wiener_convolve_add_src_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_wiener_convolve_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x4 av1_inv_txfm2d_add_16x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x64 av1_inv_txfm2d_add_16x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x64 av1_inv_txfm2d_add_32x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x8 av1_inv_txfm2d_add_32x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x16 av1_inv_txfm2d_add_4x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_4x4_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x4)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x16 av1_inv_txfm2d_add_64x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x32 av1_inv_txfm2d_add_64x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x32 av1_inv_txfm2d_add_8x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_8x8_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x8)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_inv_txfm_add_ssse3(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_resize_and_extend_frame_c(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
void av1_resize_and_extend_frame_ssse3(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
RTCD_EXTERN void (*av1_resize_and_extend_frame)(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
int av1_selfguided_restoration_sse4_1(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
int av1_selfguided_restoration_avx2(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
RTCD_EXTERN int (*av1_selfguided_restoration)(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
|
||||
void av1_upsample_intra_edge_c(uint8_t *p, int sz);
|
||||
void av1_upsample_intra_edge_sse4_1(uint8_t *p, int sz);
|
||||
RTCD_EXTERN void (*av1_upsample_intra_edge)(uint8_t *p, int sz);
|
||||
|
||||
void av1_upsample_intra_edge_high_c(uint16_t *p, int sz, int bd);
|
||||
void av1_upsample_intra_edge_high_sse4_1(uint16_t *p, int sz, int bd);
|
||||
RTCD_EXTERN void (*av1_upsample_intra_edge_high)(uint16_t *p, int sz, int bd);
|
||||
|
||||
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_warp_affine_sse4_1(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_warp_affine_avx2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
|
||||
void av1_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
void av1_wiener_convolve_add_src_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
void av1_wiener_convolve_add_src_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_copy_rect8_16bit_to_16bit_c(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_16bit_to_16bit)(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_copy_rect8_8bit_to_16bit_c(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_8bit_to_16bit)(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_filter_16_0_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_0)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_1_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_1)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_2_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_2)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_3_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_3)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_0_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_0)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_1_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_1)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_2_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_2)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_3_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_3)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_ssse3(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse4_1(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_avx2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
RTCD_EXTERN int (*cdef_find_dir)(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
||||
void cdef_find_dir_dual_c(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_sse2(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_ssse3(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_sse4_1(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_avx2(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
RTCD_EXTERN void (*cdef_find_dir_dual)(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_420_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_420_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_422_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_422_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_444_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_444_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_ssse3(TX_SIZE tx_size);
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_hbd_fn (*cfl_get_predict_hbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_ssse3(TX_SIZE tx_size);
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_lbd_fn (*cfl_get_predict_lbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_c(TX_SIZE tx_size);
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_sse2(TX_SIZE tx_size);
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subtract_average_fn (*cfl_get_subtract_average_fn)(TX_SIZE tx_size);
|
||||
|
||||
void av1_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/x86.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = x86_simd_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_avx2;
|
||||
av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_c;
|
||||
if (flags & HAS_SSE4_1) av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_avx2;
|
||||
av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_c;
|
||||
if (flags & HAS_SSE4_1) av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_avx2;
|
||||
av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_c;
|
||||
if (flags & HAS_SSSE3) av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_ssse3;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_avx2;
|
||||
av1_calc_frame_error = av1_calc_frame_error_sse2;
|
||||
if (flags & HAS_AVX2) av1_calc_frame_error = av1_calc_frame_error_avx2;
|
||||
av1_convolve_2d_scale = av1_convolve_2d_scale_c;
|
||||
if (flags & HAS_SSE4_1) av1_convolve_2d_scale = av1_convolve_2d_scale_sse4_1;
|
||||
av1_convolve_2d_sr = av1_convolve_2d_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_2d_sr = av1_convolve_2d_sr_avx2;
|
||||
av1_convolve_horiz_rs = av1_convolve_horiz_rs_c;
|
||||
if (flags & HAS_SSE4_1) av1_convolve_horiz_rs = av1_convolve_horiz_rs_sse4_1;
|
||||
av1_convolve_x_sr = av1_convolve_x_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_x_sr = av1_convolve_x_sr_avx2;
|
||||
av1_convolve_y_sr = av1_convolve_y_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_y_sr = av1_convolve_y_sr_avx2;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_sse2;
|
||||
if (flags & HAS_SSSE3) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_avx2;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_avx2;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_avx2;
|
||||
av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z1 = av1_dr_prediction_z1_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
|
||||
av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z2 = av1_dr_prediction_z2_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
|
||||
av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z3 = av1_dr_prediction_z3_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
|
||||
av1_filter_intra_edge = av1_filter_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
|
||||
av1_filter_intra_edge_high = av1_filter_intra_edge_high_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge_high = av1_filter_intra_edge_high_sse4_1;
|
||||
av1_filter_intra_predictor = av1_filter_intra_predictor_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_predictor = av1_filter_intra_predictor_sse4_1;
|
||||
av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_sse4_1;
|
||||
av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_avx2;
|
||||
av1_highbd_convolve_horiz_rs = av1_highbd_convolve_horiz_rs_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_convolve_horiz_rs = av1_highbd_convolve_horiz_rs_sse4_1;
|
||||
av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_avx2;
|
||||
av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_avx2;
|
||||
av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_avx2;
|
||||
av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
|
||||
av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_avx2;
|
||||
av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
|
||||
av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
|
||||
av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
|
||||
av1_highbd_iwht4x4_16_add = av1_highbd_iwht4x4_16_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_iwht4x4_16_add = av1_highbd_iwht4x4_16_add_sse4_1;
|
||||
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_warp_affine = av1_highbd_warp_affine_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_warp_affine = av1_highbd_warp_affine_avx2;
|
||||
av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_avx2;
|
||||
av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_sse4_1;
|
||||
av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_sse4_1;
|
||||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_SSSE3) av1_inv_txfm_add = av1_inv_txfm_add_ssse3;
|
||||
if (flags & HAS_AVX2) av1_inv_txfm_add = av1_inv_txfm_add_avx2;
|
||||
av1_resize_and_extend_frame = av1_resize_and_extend_frame_c;
|
||||
if (flags & HAS_SSSE3) av1_resize_and_extend_frame = av1_resize_and_extend_frame_ssse3;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_selfguided_restoration = av1_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_selfguided_restoration = av1_selfguided_restoration_avx2;
|
||||
av1_upsample_intra_edge = av1_upsample_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_upsample_intra_edge = av1_upsample_intra_edge_sse4_1;
|
||||
av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_c;
|
||||
if (flags & HAS_SSE4_1) av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_sse4_1;
|
||||
av1_warp_affine = av1_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_warp_affine = av1_warp_affine_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_warp_affine = av1_warp_affine_avx2;
|
||||
av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_sse2;
|
||||
if (flags & HAS_AVX2) av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_avx2;
|
||||
cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_avx2;
|
||||
cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_avx2;
|
||||
cdef_filter_16_0 = cdef_filter_16_0_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_0 = cdef_filter_16_0_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_0 = cdef_filter_16_0_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_0 = cdef_filter_16_0_avx2;
|
||||
cdef_filter_16_1 = cdef_filter_16_1_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_1 = cdef_filter_16_1_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_1 = cdef_filter_16_1_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_1 = cdef_filter_16_1_avx2;
|
||||
cdef_filter_16_2 = cdef_filter_16_2_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_2 = cdef_filter_16_2_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_2 = cdef_filter_16_2_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_2 = cdef_filter_16_2_avx2;
|
||||
cdef_filter_16_3 = cdef_filter_16_3_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_3 = cdef_filter_16_3_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_3 = cdef_filter_16_3_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_3 = cdef_filter_16_3_avx2;
|
||||
cdef_filter_8_0 = cdef_filter_8_0_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_0 = cdef_filter_8_0_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_0 = cdef_filter_8_0_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_0 = cdef_filter_8_0_avx2;
|
||||
cdef_filter_8_1 = cdef_filter_8_1_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_1 = cdef_filter_8_1_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_1 = cdef_filter_8_1_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_1 = cdef_filter_8_1_avx2;
|
||||
cdef_filter_8_2 = cdef_filter_8_2_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_2 = cdef_filter_8_2_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_2 = cdef_filter_8_2_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_2 = cdef_filter_8_2_avx2;
|
||||
cdef_filter_8_3 = cdef_filter_8_3_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_3 = cdef_filter_8_3_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_3 = cdef_filter_8_3_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_3 = cdef_filter_8_3_avx2;
|
||||
cdef_find_dir = cdef_find_dir_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_find_dir = cdef_find_dir_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_find_dir = cdef_find_dir_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_find_dir = cdef_find_dir_avx2;
|
||||
cdef_find_dir_dual = cdef_find_dir_dual_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_find_dir_dual = cdef_find_dir_dual_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_find_dir_dual = cdef_find_dir_dual_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_find_dir_dual = cdef_find_dir_dual_avx2;
|
||||
cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_avx2;
|
||||
cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_avx2;
|
||||
cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_avx2;
|
||||
cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_avx2;
|
||||
cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_avx2;
|
||||
cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_avx2;
|
||||
cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_avx2;
|
||||
cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_avx2;
|
||||
cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_sse2;
|
||||
if (flags & HAS_AVX2) cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_avx2;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,90 +0,0 @@
|
||||
;
|
||||
; Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
;
|
||||
; This source code is subject to the terms of the BSD 2 Clause License and
|
||||
; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
; was not distributed with this source code in the LICENSE file, you can
|
||||
; obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
; Media Patent License 1.0 was not distributed with this source code in the
|
||||
; PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
;
|
||||
|
||||
ARCH_ARM equ 0
|
||||
ARCH_MIPS equ 0
|
||||
ARCH_PPC equ 0
|
||||
ARCH_X86 equ 0
|
||||
ARCH_X86_64 equ 1
|
||||
CONFIG_ACCOUNTING equ 0
|
||||
CONFIG_ANALYZER equ 0
|
||||
CONFIG_AV1_DECODER equ 1
|
||||
CONFIG_AV1_ENCODER equ 0
|
||||
CONFIG_AV1_HIGHBITDEPTH equ 1
|
||||
CONFIG_AV1_TEMPORAL_DENOISING equ 0
|
||||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITRATE_ACCURACY equ 0
|
||||
CONFIG_BITRATE_ACCURACY_BL equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_COMPONENT_TIMING equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_EXCLUDE_SIMD_MISMATCH equ 0
|
||||
CONFIG_FPMT_TEST equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE_2 equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
CONFIG_INTER_STATS_ONLY equ 0
|
||||
CONFIG_LIBYUV equ 0
|
||||
CONFIG_MAX_DECODE_PROFILE equ 2
|
||||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NN_V2 equ 0
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_OPTICAL_FLOW_API equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PARTITION_SEARCH_ORDER equ 0
|
||||
CONFIG_PIC equ 0
|
||||
CONFIG_RATECTRL_LOG equ 0
|
||||
CONFIG_RD_COMMAND equ 0
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REALTIME_ONLY equ 0
|
||||
CONFIG_RT_ML_PARTITIONING equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_TFLITE equ 0
|
||||
CONFIG_THREE_PASS equ 0
|
||||
CONFIG_TUNE_BUTTERAUGLI equ 0
|
||||
CONFIG_TUNE_VMAF equ 0
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
DECODE_WIDTH_LIMIT equ 0
|
||||
FORCE_HIGHBITDEPTH_DECODING equ 0
|
||||
HAVE_AVX equ 1
|
||||
HAVE_AVX2 equ 1
|
||||
HAVE_DSPR2 equ 0
|
||||
HAVE_FEXCEPT equ 1
|
||||
HAVE_MIPS32 equ 0
|
||||
HAVE_MIPS64 equ 0
|
||||
HAVE_MMX equ 1
|
||||
HAVE_MSA equ 0
|
||||
HAVE_NEON equ 0
|
||||
HAVE_SSE equ 1
|
||||
HAVE_SSE2 equ 1
|
||||
HAVE_SSE3 equ 1
|
||||
HAVE_SSE4_1 equ 1
|
||||
HAVE_SSE4_2 equ 1
|
||||
HAVE_SSSE3 equ 1
|
||||
HAVE_VSX equ 0
|
||||
HAVE_WXWIDGETS equ 0
|
||||
STATIC_LINK_JXL equ 0
|
||||
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
#ifndef AOM_CONFIG_H_
|
||||
#define AOM_CONFIG_H_
|
||||
|
||||
#define ARCH_ARM 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_X86 0
|
||||
#define ARCH_X86_64 1
|
||||
#define CONFIG_ACCOUNTING 0
|
||||
#define CONFIG_ANALYZER 0
|
||||
#define CONFIG_AV1_DECODER 1
|
||||
#define CONFIG_AV1_ENCODER 0
|
||||
#define CONFIG_AV1_HIGHBITDEPTH 1
|
||||
#define CONFIG_AV1_TEMPORAL_DENOISING 0
|
||||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITRATE_ACCURACY 0
|
||||
#define CONFIG_BITRATE_ACCURACY_BL 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_COMPONENT_TIMING 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_EXCLUDE_SIMD_MISMATCH 0
|
||||
#define CONFIG_FPMT_TEST 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE_2 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
#define CONFIG_INTER_STATS_ONLY 0
|
||||
#define CONFIG_LIBYUV 0
|
||||
#define CONFIG_MAX_DECODE_PROFILE 2
|
||||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NN_V2 0
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_OPTICAL_FLOW_API 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PARTITION_SEARCH_ORDER 0
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_RATECTRL_LOG 0
|
||||
#define CONFIG_RD_COMMAND 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REALTIME_ONLY 0
|
||||
#define CONFIG_RT_ML_PARTITIONING 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_TFLITE 0
|
||||
#define CONFIG_THREE_PASS 0
|
||||
#define CONFIG_TUNE_BUTTERAUGLI 0
|
||||
#define CONFIG_TUNE_VMAF 0
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
#define DECODE_WIDTH_LIMIT 0
|
||||
#define FORCE_HIGHBITDEPTH_DECODING 0
|
||||
#define HAVE_AVX 1
|
||||
#define HAVE_AVX2 1
|
||||
#define HAVE_DSPR2 0
|
||||
#define HAVE_FEXCEPT 1
|
||||
#define HAVE_MIPS32 0
|
||||
#define HAVE_MIPS64 0
|
||||
#define HAVE_MMX 1
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_NEON 0
|
||||
#define HAVE_SSE 1
|
||||
#define HAVE_SSE2 1
|
||||
#define HAVE_SSE3 1
|
||||
#define HAVE_SSE4_1 1
|
||||
#define HAVE_SSE4_2 1
|
||||
#define HAVE_SSSE3 1
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INLINE inline
|
||||
#define STATIC_LINK_JXL 0
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,100 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AOM_SCALE_RTCD_H_
|
||||
#define AOM_SCALE_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
struct yv12_buffer_config;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void aom_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_borders aom_extend_frame_borders_c
|
||||
|
||||
void aom_extend_frame_borders_y_c(struct yv12_buffer_config *ybf);
|
||||
#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c
|
||||
|
||||
void aom_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c
|
||||
|
||||
void aom_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c
|
||||
|
||||
void aom_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c
|
||||
|
||||
void aom_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_i_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c
|
||||
|
||||
void aom_vertical_band_5_3_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c
|
||||
|
||||
void aom_vertical_band_5_4_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c
|
||||
|
||||
void aom_yv12_copy_frame_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, const int num_planes);
|
||||
#define aom_yv12_copy_frame aom_yv12_copy_frame_c
|
||||
|
||||
void aom_yv12_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_u aom_yv12_copy_u_c
|
||||
|
||||
void aom_yv12_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_v aom_yv12_copy_v_c
|
||||
|
||||
void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
|
||||
#define aom_yv12_copy_y aom_yv12_copy_y_c
|
||||
|
||||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
int aom_yv12_realloc_with_new_border_c(struct yv12_buffer_config *ybf, int new_border, int byte_alignment, int num_planes);
|
||||
#define aom_yv12_realloc_with_new_border aom_yv12_realloc_with_new_border_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/x86.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = x86_simd_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,778 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AV1_RTCD_H_
|
||||
#define AV1_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
/*
|
||||
* AV1
|
||||
*/
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom_dsp/odintrin.h"
|
||||
#include "aom_dsp/txfm_common.h"
|
||||
#include "av1/common/common.h"
|
||||
#include "av1/common/enums.h"
|
||||
#include "av1/common/quant_common.h"
|
||||
#include "av1/common/filter.h"
|
||||
#include "av1/common/convolve.h"
|
||||
#include "av1/common/av1_txfm.h"
|
||||
#include "av1/common/restoration.h"
|
||||
|
||||
struct macroblockd;
|
||||
|
||||
/* Encoder forward decls */
|
||||
struct macroblock;
|
||||
struct txfm_param;
|
||||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
enum { NONE, RELU, SOFTSIGN, SIGMOID } UENUM1BYTE(ACTIVATION);
|
||||
#if CONFIG_NN_V2
|
||||
enum { SOFTMAX_CROSS_ENTROPY } UENUM1BYTE(LOSS);
|
||||
struct NN_CONFIG_V2;
|
||||
typedef struct NN_CONFIG_V2 NN_CONFIG_V2;
|
||||
struct FC_LAYER;
|
||||
typedef struct FC_LAYER FC_LAYER;
|
||||
#endif // CONFIG_NN_V2
|
||||
|
||||
struct CNN_CONFIG;
|
||||
typedef struct CNN_CONFIG CNN_CONFIG;
|
||||
struct CNN_LAYER_CONFIG;
|
||||
typedef struct CNN_LAYER_CONFIG CNN_LAYER_CONFIG;
|
||||
struct CNN_THREAD_DATA;
|
||||
typedef struct CNN_THREAD_DATA CNN_THREAD_DATA;
|
||||
struct CNN_BRANCH_CONFIG;
|
||||
typedef struct CNN_BRANCH_CONFIG CNN_BRANCH_CONFIG;
|
||||
struct CNN_MULTI_OUT;
|
||||
typedef struct CNN_MULTI_OUT CNN_MULTI_OUT;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
#if CONFIG_AV1_HIGHBITDEPTH
|
||||
typedef void (*cfl_subsample_hbd_fn)(const uint16_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
typedef void (*cfl_predict_hbd_fn)(const int16_t *src, uint16_t *dst,
|
||||
int dst_stride, int alpha_q3, int bd);
|
||||
#endif
|
||||
|
||||
typedef void (*cfl_subtract_average_fn)(const uint16_t *src, int16_t *dst);
|
||||
|
||||
typedef void (*cfl_predict_lbd_fn)(const int16_t *src, uint8_t *dst,
|
||||
int dst_stride, int alpha_q3);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void av1_apply_selfguided_restoration_c(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
void av1_apply_selfguided_restoration_sse4_1(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
void av1_apply_selfguided_restoration_avx2(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
RTCD_EXTERN void (*av1_apply_selfguided_restoration)(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
void av1_build_compound_diffwtd_mask_sse4_1(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
void av1_build_compound_diffwtd_mask_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_d16_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
void av1_build_compound_diffwtd_mask_d16_sse4_1(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
void av1_build_compound_diffwtd_mask_d16_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask_d16)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_highbd_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
void av1_build_compound_diffwtd_mask_highbd_ssse3(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
void av1_build_compound_diffwtd_mask_highbd_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask_highbd)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
|
||||
int64_t av1_calc_frame_error_c(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
int64_t av1_calc_frame_error_sse2(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
int64_t av1_calc_frame_error_avx2(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
RTCD_EXTERN int64_t (*av1_calc_frame_error)(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
|
||||
void av1_convolve_2d_scale_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_scale_sse4_1(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_2d_scale)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_2d_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_2d_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_horiz_rs_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
void av1_convolve_horiz_rs_sse4_1(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
RTCD_EXTERN void (*av1_convolve_horiz_rs)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
|
||||
void av1_convolve_x_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_x_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_x_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_x_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_y_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
void av1_convolve_y_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
void av1_convolve_y_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
void av1_dr_prediction_z1_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
void av1_dr_prediction_z1_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z2_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z2_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z3_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_sse4_1(uint8_t *p, int sz, int strength);
|
||||
RTCD_EXTERN void (*av1_filter_intra_edge)(uint8_t *p, int sz, int strength);
|
||||
|
||||
void av1_filter_intra_edge_high_c(uint16_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_high_sse4_1(uint16_t *p, int sz, int strength);
|
||||
RTCD_EXTERN void (*av1_filter_intra_edge_high)(uint16_t *p, int sz, int strength);
|
||||
|
||||
void av1_filter_intra_predictor_c(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
void av1_filter_intra_predictor_sse4_1(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
RTCD_EXTERN void (*av1_filter_intra_predictor)(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
|
||||
void av1_highbd_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
void av1_highbd_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8 av1_highbd_convolve8_sse2
|
||||
|
||||
void av1_highbd_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
void av1_highbd_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_sse2
|
||||
|
||||
void av1_highbd_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
void av1_highbd_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_sse2
|
||||
|
||||
void av1_highbd_convolve_2d_scale_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_scale_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_2d_scale)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_2d_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_2d_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_avg av1_highbd_convolve_avg_c
|
||||
|
||||
void av1_highbd_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_copy av1_highbd_convolve_copy_c
|
||||
|
||||
void av1_highbd_convolve_horiz_rs_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
void av1_highbd_convolve_horiz_rs_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_horiz_rs)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
|
||||
void av1_highbd_convolve_x_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_x_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_x_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_x_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_y_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
void av1_highbd_convolve_y_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
void av1_highbd_convolve_y_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_y_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z1_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z1)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z2_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z2)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z3)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_avx2(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x64 av1_highbd_inv_txfm_add_16x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x64 av1_highbd_inv_txfm_add_32x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x16)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x16 av1_highbd_inv_txfm_add_64x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x32 av1_highbd_inv_txfm_add_64x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x64 av1_highbd_inv_txfm_add_64x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x8_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
void av1_highbd_iwht4x4_16_add_sse4_1(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_iwht4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
|
||||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_highbd_warp_affine_sse4_1(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_highbd_warp_affine_avx2(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
|
||||
void av1_highbd_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_wiener_convolve_add_src_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_wiener_convolve_add_src_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_wiener_convolve_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x4 av1_inv_txfm2d_add_16x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x64 av1_inv_txfm2d_add_16x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x64 av1_inv_txfm2d_add_32x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x8 av1_inv_txfm2d_add_32x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x16 av1_inv_txfm2d_add_4x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_4x4_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x4)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x16 av1_inv_txfm2d_add_64x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x32 av1_inv_txfm2d_add_64x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x32 av1_inv_txfm2d_add_8x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_8x8_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x8)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_inv_txfm_add_ssse3(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_resize_and_extend_frame_c(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
void av1_resize_and_extend_frame_ssse3(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
RTCD_EXTERN void (*av1_resize_and_extend_frame)(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
int av1_selfguided_restoration_sse4_1(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
int av1_selfguided_restoration_avx2(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
RTCD_EXTERN int (*av1_selfguided_restoration)(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
|
||||
void av1_upsample_intra_edge_c(uint8_t *p, int sz);
|
||||
void av1_upsample_intra_edge_sse4_1(uint8_t *p, int sz);
|
||||
RTCD_EXTERN void (*av1_upsample_intra_edge)(uint8_t *p, int sz);
|
||||
|
||||
void av1_upsample_intra_edge_high_c(uint16_t *p, int sz, int bd);
|
||||
void av1_upsample_intra_edge_high_sse4_1(uint16_t *p, int sz, int bd);
|
||||
RTCD_EXTERN void (*av1_upsample_intra_edge_high)(uint16_t *p, int sz, int bd);
|
||||
|
||||
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_warp_affine_sse4_1(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_warp_affine_avx2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
|
||||
void av1_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
void av1_wiener_convolve_add_src_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
void av1_wiener_convolve_add_src_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_copy_rect8_16bit_to_16bit_c(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_16bit_to_16bit)(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_copy_rect8_8bit_to_16bit_c(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_8bit_to_16bit)(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_filter_16_0_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_0)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_1_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_1)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_2_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_2)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_3_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_3)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_0_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_0)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_1_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_1)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_2_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_2)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_3_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_3)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_ssse3(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse4_1(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_avx2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
RTCD_EXTERN int (*cdef_find_dir)(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
||||
void cdef_find_dir_dual_c(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_sse2(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_ssse3(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_sse4_1(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_avx2(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
RTCD_EXTERN void (*cdef_find_dir_dual)(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_420_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_420_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_422_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_422_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_444_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_444_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_ssse3(TX_SIZE tx_size);
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_hbd_fn (*cfl_get_predict_hbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_ssse3(TX_SIZE tx_size);
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_lbd_fn (*cfl_get_predict_lbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_c(TX_SIZE tx_size);
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_sse2(TX_SIZE tx_size);
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subtract_average_fn (*cfl_get_subtract_average_fn)(TX_SIZE tx_size);
|
||||
|
||||
void av1_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/x86.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = x86_simd_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_avx2;
|
||||
av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_c;
|
||||
if (flags & HAS_SSE4_1) av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_avx2;
|
||||
av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_c;
|
||||
if (flags & HAS_SSE4_1) av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_avx2;
|
||||
av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_c;
|
||||
if (flags & HAS_SSSE3) av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_ssse3;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_avx2;
|
||||
av1_calc_frame_error = av1_calc_frame_error_sse2;
|
||||
if (flags & HAS_AVX2) av1_calc_frame_error = av1_calc_frame_error_avx2;
|
||||
av1_convolve_2d_scale = av1_convolve_2d_scale_c;
|
||||
if (flags & HAS_SSE4_1) av1_convolve_2d_scale = av1_convolve_2d_scale_sse4_1;
|
||||
av1_convolve_2d_sr = av1_convolve_2d_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_2d_sr = av1_convolve_2d_sr_avx2;
|
||||
av1_convolve_horiz_rs = av1_convolve_horiz_rs_c;
|
||||
if (flags & HAS_SSE4_1) av1_convolve_horiz_rs = av1_convolve_horiz_rs_sse4_1;
|
||||
av1_convolve_x_sr = av1_convolve_x_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_x_sr = av1_convolve_x_sr_avx2;
|
||||
av1_convolve_y_sr = av1_convolve_y_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_y_sr = av1_convolve_y_sr_avx2;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_sse2;
|
||||
if (flags & HAS_SSSE3) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_avx2;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_avx2;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_avx2;
|
||||
av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z1 = av1_dr_prediction_z1_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
|
||||
av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z2 = av1_dr_prediction_z2_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
|
||||
av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z3 = av1_dr_prediction_z3_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
|
||||
av1_filter_intra_edge = av1_filter_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
|
||||
av1_filter_intra_edge_high = av1_filter_intra_edge_high_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge_high = av1_filter_intra_edge_high_sse4_1;
|
||||
av1_filter_intra_predictor = av1_filter_intra_predictor_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_predictor = av1_filter_intra_predictor_sse4_1;
|
||||
av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_sse4_1;
|
||||
av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_avx2;
|
||||
av1_highbd_convolve_horiz_rs = av1_highbd_convolve_horiz_rs_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_convolve_horiz_rs = av1_highbd_convolve_horiz_rs_sse4_1;
|
||||
av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_avx2;
|
||||
av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_avx2;
|
||||
av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_avx2;
|
||||
av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
|
||||
av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_avx2;
|
||||
av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
|
||||
av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
|
||||
av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
|
||||
av1_highbd_iwht4x4_16_add = av1_highbd_iwht4x4_16_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_iwht4x4_16_add = av1_highbd_iwht4x4_16_add_sse4_1;
|
||||
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_warp_affine = av1_highbd_warp_affine_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_warp_affine = av1_highbd_warp_affine_avx2;
|
||||
av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_avx2;
|
||||
av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_sse4_1;
|
||||
av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_sse4_1;
|
||||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_SSSE3) av1_inv_txfm_add = av1_inv_txfm_add_ssse3;
|
||||
if (flags & HAS_AVX2) av1_inv_txfm_add = av1_inv_txfm_add_avx2;
|
||||
av1_resize_and_extend_frame = av1_resize_and_extend_frame_c;
|
||||
if (flags & HAS_SSSE3) av1_resize_and_extend_frame = av1_resize_and_extend_frame_ssse3;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_selfguided_restoration = av1_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_selfguided_restoration = av1_selfguided_restoration_avx2;
|
||||
av1_upsample_intra_edge = av1_upsample_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_upsample_intra_edge = av1_upsample_intra_edge_sse4_1;
|
||||
av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_c;
|
||||
if (flags & HAS_SSE4_1) av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_sse4_1;
|
||||
av1_warp_affine = av1_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_warp_affine = av1_warp_affine_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_warp_affine = av1_warp_affine_avx2;
|
||||
av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_sse2;
|
||||
if (flags & HAS_AVX2) av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_avx2;
|
||||
cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_avx2;
|
||||
cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_avx2;
|
||||
cdef_filter_16_0 = cdef_filter_16_0_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_0 = cdef_filter_16_0_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_0 = cdef_filter_16_0_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_0 = cdef_filter_16_0_avx2;
|
||||
cdef_filter_16_1 = cdef_filter_16_1_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_1 = cdef_filter_16_1_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_1 = cdef_filter_16_1_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_1 = cdef_filter_16_1_avx2;
|
||||
cdef_filter_16_2 = cdef_filter_16_2_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_2 = cdef_filter_16_2_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_2 = cdef_filter_16_2_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_2 = cdef_filter_16_2_avx2;
|
||||
cdef_filter_16_3 = cdef_filter_16_3_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_3 = cdef_filter_16_3_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_3 = cdef_filter_16_3_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_3 = cdef_filter_16_3_avx2;
|
||||
cdef_filter_8_0 = cdef_filter_8_0_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_0 = cdef_filter_8_0_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_0 = cdef_filter_8_0_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_0 = cdef_filter_8_0_avx2;
|
||||
cdef_filter_8_1 = cdef_filter_8_1_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_1 = cdef_filter_8_1_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_1 = cdef_filter_8_1_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_1 = cdef_filter_8_1_avx2;
|
||||
cdef_filter_8_2 = cdef_filter_8_2_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_2 = cdef_filter_8_2_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_2 = cdef_filter_8_2_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_2 = cdef_filter_8_2_avx2;
|
||||
cdef_filter_8_3 = cdef_filter_8_3_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_3 = cdef_filter_8_3_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_3 = cdef_filter_8_3_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_3 = cdef_filter_8_3_avx2;
|
||||
cdef_find_dir = cdef_find_dir_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_find_dir = cdef_find_dir_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_find_dir = cdef_find_dir_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_find_dir = cdef_find_dir_avx2;
|
||||
cdef_find_dir_dual = cdef_find_dir_dual_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_find_dir_dual = cdef_find_dir_dual_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_find_dir_dual = cdef_find_dir_dual_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_find_dir_dual = cdef_find_dir_dual_avx2;
|
||||
cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_avx2;
|
||||
cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_avx2;
|
||||
cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_avx2;
|
||||
cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_avx2;
|
||||
cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_avx2;
|
||||
cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_avx2;
|
||||
cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_avx2;
|
||||
cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_avx2;
|
||||
cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_sse2;
|
||||
if (flags & HAS_AVX2) cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_avx2;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,90 +0,0 @@
|
||||
;
|
||||
; Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
;
|
||||
; This source code is subject to the terms of the BSD 2 Clause License and
|
||||
; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
; was not distributed with this source code in the LICENSE file, you can
|
||||
; obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
; Media Patent License 1.0 was not distributed with this source code in the
|
||||
; PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
;
|
||||
|
||||
ARCH_ARM equ 0
|
||||
ARCH_MIPS equ 0
|
||||
ARCH_PPC equ 0
|
||||
ARCH_X86 equ 1
|
||||
ARCH_X86_64 equ 0
|
||||
CONFIG_ACCOUNTING equ 0
|
||||
CONFIG_ANALYZER equ 0
|
||||
CONFIG_AV1_DECODER equ 1
|
||||
CONFIG_AV1_ENCODER equ 0
|
||||
CONFIG_AV1_HIGHBITDEPTH equ 1
|
||||
CONFIG_AV1_TEMPORAL_DENOISING equ 0
|
||||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITRATE_ACCURACY equ 0
|
||||
CONFIG_BITRATE_ACCURACY_BL equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_COMPONENT_TIMING equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_EXCLUDE_SIMD_MISMATCH equ 0
|
||||
CONFIG_FPMT_TEST equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE_2 equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
CONFIG_INTER_STATS_ONLY equ 0
|
||||
CONFIG_LIBYUV equ 0
|
||||
CONFIG_MAX_DECODE_PROFILE equ 2
|
||||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NN_V2 equ 0
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_OPTICAL_FLOW_API equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PARTITION_SEARCH_ORDER equ 0
|
||||
CONFIG_PIC equ 0
|
||||
CONFIG_RATECTRL_LOG equ 0
|
||||
CONFIG_RD_COMMAND equ 0
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REALTIME_ONLY equ 0
|
||||
CONFIG_RT_ML_PARTITIONING equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_TFLITE equ 0
|
||||
CONFIG_THREE_PASS equ 0
|
||||
CONFIG_TUNE_BUTTERAUGLI equ 0
|
||||
CONFIG_TUNE_VMAF equ 0
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
DECODE_WIDTH_LIMIT equ 0
|
||||
FORCE_HIGHBITDEPTH_DECODING equ 0
|
||||
HAVE_AVX equ 1
|
||||
HAVE_AVX2 equ 1
|
||||
HAVE_DSPR2 equ 0
|
||||
HAVE_FEXCEPT equ 1
|
||||
HAVE_MIPS32 equ 0
|
||||
HAVE_MIPS64 equ 0
|
||||
HAVE_MMX equ 1
|
||||
HAVE_MSA equ 0
|
||||
HAVE_NEON equ 0
|
||||
HAVE_SSE equ 1
|
||||
HAVE_SSE2 equ 1
|
||||
HAVE_SSE3 equ 1
|
||||
HAVE_SSE4_1 equ 1
|
||||
HAVE_SSE4_2 equ 1
|
||||
HAVE_SSSE3 equ 1
|
||||
HAVE_VSX equ 0
|
||||
HAVE_WXWIDGETS equ 0
|
||||
STATIC_LINK_JXL equ 0
|
||||
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
#ifndef AOM_CONFIG_H_
|
||||
#define AOM_CONFIG_H_
|
||||
|
||||
#define ARCH_ARM 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_X86 1
|
||||
#define ARCH_X86_64 0
|
||||
#define CONFIG_ACCOUNTING 0
|
||||
#define CONFIG_ANALYZER 0
|
||||
#define CONFIG_AV1_DECODER 1
|
||||
#define CONFIG_AV1_ENCODER 0
|
||||
#define CONFIG_AV1_HIGHBITDEPTH 1
|
||||
#define CONFIG_AV1_TEMPORAL_DENOISING 0
|
||||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITRATE_ACCURACY 0
|
||||
#define CONFIG_BITRATE_ACCURACY_BL 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_COMPONENT_TIMING 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_EXCLUDE_SIMD_MISMATCH 0
|
||||
#define CONFIG_FPMT_TEST 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE_2 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
#define CONFIG_INTER_STATS_ONLY 0
|
||||
#define CONFIG_LIBYUV 0
|
||||
#define CONFIG_MAX_DECODE_PROFILE 2
|
||||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NN_V2 0
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_OPTICAL_FLOW_API 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PARTITION_SEARCH_ORDER 0
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_RATECTRL_LOG 0
|
||||
#define CONFIG_RD_COMMAND 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REALTIME_ONLY 0
|
||||
#define CONFIG_RT_ML_PARTITIONING 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_TFLITE 0
|
||||
#define CONFIG_THREE_PASS 0
|
||||
#define CONFIG_TUNE_BUTTERAUGLI 0
|
||||
#define CONFIG_TUNE_VMAF 0
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
#define DECODE_WIDTH_LIMIT 0
|
||||
#define FORCE_HIGHBITDEPTH_DECODING 0
|
||||
#define HAVE_AVX 1
|
||||
#define HAVE_AVX2 1
|
||||
#define HAVE_DSPR2 0
|
||||
#define HAVE_FEXCEPT 1
|
||||
#define HAVE_MIPS32 0
|
||||
#define HAVE_MIPS64 0
|
||||
#define HAVE_MMX 1
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_NEON 0
|
||||
#define HAVE_SSE 1
|
||||
#define HAVE_SSE2 1
|
||||
#define HAVE_SSE3 1
|
||||
#define HAVE_SSE4_1 1
|
||||
#define HAVE_SSE4_2 1
|
||||
#define HAVE_SSSE3 1
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INLINE inline
|
||||
#define STATIC_LINK_JXL 0
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,100 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AOM_SCALE_RTCD_H_
|
||||
#define AOM_SCALE_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
struct yv12_buffer_config;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void aom_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_borders aom_extend_frame_borders_c
|
||||
|
||||
void aom_extend_frame_borders_y_c(struct yv12_buffer_config *ybf);
|
||||
#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c
|
||||
|
||||
void aom_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c
|
||||
|
||||
void aom_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c
|
||||
|
||||
void aom_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c
|
||||
|
||||
void aom_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_i_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c
|
||||
|
||||
void aom_vertical_band_5_3_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c
|
||||
|
||||
void aom_vertical_band_5_4_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c
|
||||
|
||||
void aom_yv12_copy_frame_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, const int num_planes);
|
||||
#define aom_yv12_copy_frame aom_yv12_copy_frame_c
|
||||
|
||||
void aom_yv12_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_u aom_yv12_copy_u_c
|
||||
|
||||
void aom_yv12_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_v aom_yv12_copy_v_c
|
||||
|
||||
void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
|
||||
#define aom_yv12_copy_y aom_yv12_copy_y_c
|
||||
|
||||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
int aom_yv12_realloc_with_new_border_c(struct yv12_buffer_config *ybf, int new_border, int byte_alignment, int num_planes);
|
||||
#define aom_yv12_realloc_with_new_border aom_yv12_realloc_with_new_border_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/x86.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = x86_simd_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,821 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AV1_RTCD_H_
|
||||
#define AV1_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
/*
|
||||
* AV1
|
||||
*/
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom_dsp/odintrin.h"
|
||||
#include "aom_dsp/txfm_common.h"
|
||||
#include "av1/common/common.h"
|
||||
#include "av1/common/enums.h"
|
||||
#include "av1/common/quant_common.h"
|
||||
#include "av1/common/filter.h"
|
||||
#include "av1/common/convolve.h"
|
||||
#include "av1/common/av1_txfm.h"
|
||||
#include "av1/common/restoration.h"
|
||||
|
||||
struct macroblockd;
|
||||
|
||||
/* Encoder forward decls */
|
||||
struct macroblock;
|
||||
struct txfm_param;
|
||||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
enum { NONE, RELU, SOFTSIGN, SIGMOID } UENUM1BYTE(ACTIVATION);
|
||||
#if CONFIG_NN_V2
|
||||
enum { SOFTMAX_CROSS_ENTROPY } UENUM1BYTE(LOSS);
|
||||
struct NN_CONFIG_V2;
|
||||
typedef struct NN_CONFIG_V2 NN_CONFIG_V2;
|
||||
struct FC_LAYER;
|
||||
typedef struct FC_LAYER FC_LAYER;
|
||||
#endif // CONFIG_NN_V2
|
||||
|
||||
struct CNN_CONFIG;
|
||||
typedef struct CNN_CONFIG CNN_CONFIG;
|
||||
struct CNN_LAYER_CONFIG;
|
||||
typedef struct CNN_LAYER_CONFIG CNN_LAYER_CONFIG;
|
||||
struct CNN_THREAD_DATA;
|
||||
typedef struct CNN_THREAD_DATA CNN_THREAD_DATA;
|
||||
struct CNN_BRANCH_CONFIG;
|
||||
typedef struct CNN_BRANCH_CONFIG CNN_BRANCH_CONFIG;
|
||||
struct CNN_MULTI_OUT;
|
||||
typedef struct CNN_MULTI_OUT CNN_MULTI_OUT;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
#if CONFIG_AV1_HIGHBITDEPTH
|
||||
typedef void (*cfl_subsample_hbd_fn)(const uint16_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
typedef void (*cfl_predict_hbd_fn)(const int16_t *src, uint16_t *dst,
|
||||
int dst_stride, int alpha_q3, int bd);
|
||||
#endif
|
||||
|
||||
typedef void (*cfl_subtract_average_fn)(const uint16_t *src, int16_t *dst);
|
||||
|
||||
typedef void (*cfl_predict_lbd_fn)(const int16_t *src, uint8_t *dst,
|
||||
int dst_stride, int alpha_q3);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void av1_apply_selfguided_restoration_c(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
void av1_apply_selfguided_restoration_sse4_1(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
void av1_apply_selfguided_restoration_avx2(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
RTCD_EXTERN void (*av1_apply_selfguided_restoration)(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
void av1_build_compound_diffwtd_mask_sse4_1(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
void av1_build_compound_diffwtd_mask_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_d16_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
void av1_build_compound_diffwtd_mask_d16_sse4_1(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
void av1_build_compound_diffwtd_mask_d16_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask_d16)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_highbd_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
void av1_build_compound_diffwtd_mask_highbd_ssse3(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
void av1_build_compound_diffwtd_mask_highbd_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask_highbd)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
|
||||
int64_t av1_calc_frame_error_c(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
int64_t av1_calc_frame_error_sse2(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
int64_t av1_calc_frame_error_avx2(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
RTCD_EXTERN int64_t (*av1_calc_frame_error)(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
|
||||
void av1_convolve_2d_scale_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_scale_sse4_1(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_2d_scale)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_2d_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_2d_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_horiz_rs_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
void av1_convolve_horiz_rs_sse4_1(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
RTCD_EXTERN void (*av1_convolve_horiz_rs)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
|
||||
void av1_convolve_x_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_x_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_x_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_x_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_y_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
void av1_convolve_y_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
void av1_convolve_y_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
void av1_dr_prediction_z1_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
void av1_dr_prediction_z1_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z2_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z2_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z3_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_sse4_1(uint8_t *p, int sz, int strength);
|
||||
RTCD_EXTERN void (*av1_filter_intra_edge)(uint8_t *p, int sz, int strength);
|
||||
|
||||
void av1_filter_intra_edge_high_c(uint16_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_high_sse4_1(uint16_t *p, int sz, int strength);
|
||||
RTCD_EXTERN void (*av1_filter_intra_edge_high)(uint16_t *p, int sz, int strength);
|
||||
|
||||
void av1_filter_intra_predictor_c(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
void av1_filter_intra_predictor_sse4_1(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
RTCD_EXTERN void (*av1_filter_intra_predictor)(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
|
||||
void av1_highbd_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8 av1_highbd_convolve8_c
|
||||
|
||||
void av1_highbd_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_c
|
||||
|
||||
void av1_highbd_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_c
|
||||
|
||||
void av1_highbd_convolve_2d_scale_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_scale_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_2d_scale)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_2d_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_2d_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_avg av1_highbd_convolve_avg_c
|
||||
|
||||
void av1_highbd_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_copy av1_highbd_convolve_copy_c
|
||||
|
||||
void av1_highbd_convolve_horiz_rs_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
void av1_highbd_convolve_horiz_rs_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_horiz_rs)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
|
||||
void av1_highbd_convolve_x_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_x_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_x_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_x_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_y_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
void av1_highbd_convolve_y_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
void av1_highbd_convolve_y_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_y_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z1_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z1)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z2_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z2)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z3)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_avx2(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x64 av1_highbd_inv_txfm_add_16x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x64 av1_highbd_inv_txfm_add_32x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x16)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x16 av1_highbd_inv_txfm_add_64x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x32 av1_highbd_inv_txfm_add_64x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x64 av1_highbd_inv_txfm_add_64x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x8_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
void av1_highbd_iwht4x4_16_add_sse4_1(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_iwht4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
|
||||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_highbd_warp_affine_sse4_1(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_highbd_warp_affine_avx2(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
|
||||
void av1_highbd_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_wiener_convolve_add_src_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_wiener_convolve_add_src_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_wiener_convolve_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x4 av1_inv_txfm2d_add_16x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x64 av1_inv_txfm2d_add_16x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x64 av1_inv_txfm2d_add_32x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x8 av1_inv_txfm2d_add_32x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x16 av1_inv_txfm2d_add_4x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_4x4_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x4)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x16 av1_inv_txfm2d_add_64x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x32 av1_inv_txfm2d_add_64x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x32 av1_inv_txfm2d_add_8x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_8x8_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x8)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_inv_txfm_add_ssse3(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_resize_and_extend_frame_c(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
void av1_resize_and_extend_frame_ssse3(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
RTCD_EXTERN void (*av1_resize_and_extend_frame)(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
int av1_selfguided_restoration_sse4_1(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
int av1_selfguided_restoration_avx2(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
RTCD_EXTERN int (*av1_selfguided_restoration)(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
|
||||
void av1_upsample_intra_edge_c(uint8_t *p, int sz);
|
||||
void av1_upsample_intra_edge_sse4_1(uint8_t *p, int sz);
|
||||
RTCD_EXTERN void (*av1_upsample_intra_edge)(uint8_t *p, int sz);
|
||||
|
||||
void av1_upsample_intra_edge_high_c(uint16_t *p, int sz, int bd);
|
||||
void av1_upsample_intra_edge_high_sse4_1(uint16_t *p, int sz, int bd);
|
||||
RTCD_EXTERN void (*av1_upsample_intra_edge_high)(uint16_t *p, int sz, int bd);
|
||||
|
||||
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_warp_affine_sse4_1(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_warp_affine_avx2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
|
||||
void av1_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
void av1_wiener_convolve_add_src_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
void av1_wiener_convolve_add_src_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_copy_rect8_16bit_to_16bit_c(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_16bit_to_16bit)(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_copy_rect8_8bit_to_16bit_c(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_8bit_to_16bit)(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_filter_16_0_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_0)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_1_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_1)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_2_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_2)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_3_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_3)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_0_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_0)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_1_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_1)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_2_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_2)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_3_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_3)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_ssse3(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse4_1(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_avx2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
RTCD_EXTERN int (*cdef_find_dir)(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
||||
void cdef_find_dir_dual_c(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_sse2(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_ssse3(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_sse4_1(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_avx2(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
RTCD_EXTERN void (*cdef_find_dir_dual)(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_420_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_420_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_422_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_422_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_444_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_444_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_ssse3(TX_SIZE tx_size);
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_hbd_fn (*cfl_get_predict_hbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_ssse3(TX_SIZE tx_size);
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_lbd_fn (*cfl_get_predict_lbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_c(TX_SIZE tx_size);
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_sse2(TX_SIZE tx_size);
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subtract_average_fn (*cfl_get_subtract_average_fn)(TX_SIZE tx_size);
|
||||
|
||||
void av1_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/x86.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = x86_simd_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_avx2;
|
||||
av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_c;
|
||||
if (flags & HAS_SSE4_1) av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_avx2;
|
||||
av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_c;
|
||||
if (flags & HAS_SSE4_1) av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_avx2;
|
||||
av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_c;
|
||||
if (flags & HAS_SSSE3) av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_ssse3;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_avx2;
|
||||
av1_calc_frame_error = av1_calc_frame_error_c;
|
||||
if (flags & HAS_SSE2) av1_calc_frame_error = av1_calc_frame_error_sse2;
|
||||
if (flags & HAS_AVX2) av1_calc_frame_error = av1_calc_frame_error_avx2;
|
||||
av1_convolve_2d_scale = av1_convolve_2d_scale_c;
|
||||
if (flags & HAS_SSE4_1) av1_convolve_2d_scale = av1_convolve_2d_scale_sse4_1;
|
||||
av1_convolve_2d_sr = av1_convolve_2d_sr_c;
|
||||
if (flags & HAS_SSE2) av1_convolve_2d_sr = av1_convolve_2d_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_2d_sr = av1_convolve_2d_sr_avx2;
|
||||
av1_convolve_horiz_rs = av1_convolve_horiz_rs_c;
|
||||
if (flags & HAS_SSE4_1) av1_convolve_horiz_rs = av1_convolve_horiz_rs_sse4_1;
|
||||
av1_convolve_x_sr = av1_convolve_x_sr_c;
|
||||
if (flags & HAS_SSE2) av1_convolve_x_sr = av1_convolve_x_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_x_sr = av1_convolve_x_sr_avx2;
|
||||
av1_convolve_y_sr = av1_convolve_y_sr_c;
|
||||
if (flags & HAS_SSE2) av1_convolve_y_sr = av1_convolve_y_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_y_sr = av1_convolve_y_sr_avx2;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_sse2;
|
||||
if (flags & HAS_SSSE3) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_avx2;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_avx2;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_avx2;
|
||||
av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z1 = av1_dr_prediction_z1_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
|
||||
av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z2 = av1_dr_prediction_z2_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
|
||||
av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z3 = av1_dr_prediction_z3_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
|
||||
av1_filter_intra_edge = av1_filter_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
|
||||
av1_filter_intra_edge_high = av1_filter_intra_edge_high_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge_high = av1_filter_intra_edge_high_sse4_1;
|
||||
av1_filter_intra_predictor = av1_filter_intra_predictor_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_predictor = av1_filter_intra_predictor_sse4_1;
|
||||
av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_sse4_1;
|
||||
av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_avx2;
|
||||
av1_highbd_convolve_horiz_rs = av1_highbd_convolve_horiz_rs_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_convolve_horiz_rs = av1_highbd_convolve_horiz_rs_sse4_1;
|
||||
av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_avx2;
|
||||
av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_avx2;
|
||||
av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_avx2;
|
||||
av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
|
||||
av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_avx2;
|
||||
av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
|
||||
av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
|
||||
av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
|
||||
av1_highbd_iwht4x4_16_add = av1_highbd_iwht4x4_16_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_iwht4x4_16_add = av1_highbd_iwht4x4_16_add_sse4_1;
|
||||
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_warp_affine = av1_highbd_warp_affine_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_warp_affine = av1_highbd_warp_affine_avx2;
|
||||
av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_avx2;
|
||||
av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_sse4_1;
|
||||
av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_sse4_1;
|
||||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_SSSE3) av1_inv_txfm_add = av1_inv_txfm_add_ssse3;
|
||||
if (flags & HAS_AVX2) av1_inv_txfm_add = av1_inv_txfm_add_avx2;
|
||||
av1_resize_and_extend_frame = av1_resize_and_extend_frame_c;
|
||||
if (flags & HAS_SSSE3) av1_resize_and_extend_frame = av1_resize_and_extend_frame_ssse3;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_selfguided_restoration = av1_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_selfguided_restoration = av1_selfguided_restoration_avx2;
|
||||
av1_upsample_intra_edge = av1_upsample_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_upsample_intra_edge = av1_upsample_intra_edge_sse4_1;
|
||||
av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_c;
|
||||
if (flags & HAS_SSE4_1) av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_sse4_1;
|
||||
av1_warp_affine = av1_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_warp_affine = av1_warp_affine_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_warp_affine = av1_warp_affine_avx2;
|
||||
av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_c;
|
||||
if (flags & HAS_SSE2) av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_sse2;
|
||||
if (flags & HAS_AVX2) av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_avx2;
|
||||
cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_c;
|
||||
if (_MSC_VER <= 1900) {
|
||||
if (flags & HAS_SSE2) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_avx2;
|
||||
}
|
||||
cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_c;
|
||||
if (_MSC_VER <= 1900) {
|
||||
if (flags & HAS_SSE2) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_avx2;
|
||||
}
|
||||
cdef_filter_16_0 = cdef_filter_16_0_c;
|
||||
if (_MSC_VER <= 1900) {
|
||||
if (flags & HAS_SSE2) cdef_filter_16_0 = cdef_filter_16_0_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_0 = cdef_filter_16_0_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_0 = cdef_filter_16_0_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_0 = cdef_filter_16_0_avx2;
|
||||
}
|
||||
cdef_filter_16_1 = cdef_filter_16_1_c;
|
||||
if (_MSC_VER <= 1900) {
|
||||
if (flags & HAS_SSE2) cdef_filter_16_1 = cdef_filter_16_1_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_1 = cdef_filter_16_1_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_1 = cdef_filter_16_1_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_1 = cdef_filter_16_1_avx2;
|
||||
}
|
||||
cdef_filter_16_2 = cdef_filter_16_2_c;
|
||||
if (_MSC_VER <= 1900) {
|
||||
if (flags & HAS_SSE2) cdef_filter_16_2 = cdef_filter_16_2_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_2 = cdef_filter_16_2_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_2 = cdef_filter_16_2_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_2 = cdef_filter_16_2_avx2;
|
||||
}
|
||||
cdef_filter_16_3 = cdef_filter_16_3_c;
|
||||
if (_MSC_VER <= 1900) {
|
||||
if (flags & HAS_SSE2) cdef_filter_16_3 = cdef_filter_16_3_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_3 = cdef_filter_16_3_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_3 = cdef_filter_16_3_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_3 = cdef_filter_16_3_avx2;
|
||||
}
|
||||
cdef_filter_8_0 = cdef_filter_8_0_c;
|
||||
if (_MSC_VER <= 1900) {
|
||||
if (flags & HAS_SSE2) cdef_filter_8_0 = cdef_filter_8_0_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_0 = cdef_filter_8_0_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_0 = cdef_filter_8_0_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_0 = cdef_filter_8_0_avx2;
|
||||
}
|
||||
cdef_filter_8_1 = cdef_filter_8_1_c;
|
||||
if (_MSC_VER <= 1900) {
|
||||
if (flags & HAS_SSE2) cdef_filter_8_1 = cdef_filter_8_1_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_1 = cdef_filter_8_1_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_1 = cdef_filter_8_1_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_1 = cdef_filter_8_1_avx2;
|
||||
}
|
||||
cdef_filter_8_2 = cdef_filter_8_2_c;
|
||||
if (_MSC_VER <= 1900) {
|
||||
if (flags & HAS_SSE2) cdef_filter_8_2 = cdef_filter_8_2_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_2 = cdef_filter_8_2_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_2 = cdef_filter_8_2_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_2 = cdef_filter_8_2_avx2;
|
||||
}
|
||||
cdef_filter_8_3 = cdef_filter_8_3_c;
|
||||
if (_MSC_VER <= 1900) {
|
||||
if (flags & HAS_SSE2) cdef_filter_8_3 = cdef_filter_8_3_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_3 = cdef_filter_8_3_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_3 = cdef_filter_8_3_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_3 = cdef_filter_8_3_avx2;
|
||||
}
|
||||
cdef_find_dir = cdef_find_dir_c;
|
||||
if (_MSC_VER <= 1900) {
|
||||
if (flags & HAS_SSE2) cdef_find_dir = cdef_find_dir_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_find_dir = cdef_find_dir_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_find_dir = cdef_find_dir_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_find_dir = cdef_find_dir_avx2;
|
||||
}
|
||||
cdef_find_dir_dual = cdef_find_dir_dual_c;
|
||||
if (_MSC_VER <= 1900) {
|
||||
if (flags & HAS_SSE2) cdef_find_dir_dual = cdef_find_dir_dual_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_find_dir_dual = cdef_find_dir_dual_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_find_dir_dual = cdef_find_dir_dual_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_find_dir_dual = cdef_find_dir_dual_avx2;
|
||||
}
|
||||
cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_avx2;
|
||||
cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_avx2;
|
||||
cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_avx2;
|
||||
cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_avx2;
|
||||
cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_avx2;
|
||||
cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_avx2;
|
||||
cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_avx2;
|
||||
cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_avx2;
|
||||
cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_c;
|
||||
if (flags & HAS_SSE2) cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_sse2;
|
||||
if (flags & HAS_AVX2) cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_avx2;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,90 +0,0 @@
|
||||
;
|
||||
; Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
;
|
||||
; This source code is subject to the terms of the BSD 2 Clause License and
|
||||
; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
; was not distributed with this source code in the LICENSE file, you can
|
||||
; obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
; Media Patent License 1.0 was not distributed with this source code in the
|
||||
; PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
;
|
||||
|
||||
ARCH_ARM equ 0
|
||||
ARCH_MIPS equ 0
|
||||
ARCH_PPC equ 0
|
||||
ARCH_X86 equ 1
|
||||
ARCH_X86_64 equ 0
|
||||
CONFIG_ACCOUNTING equ 0
|
||||
CONFIG_ANALYZER equ 0
|
||||
CONFIG_AV1_DECODER equ 1
|
||||
CONFIG_AV1_ENCODER equ 0
|
||||
CONFIG_AV1_HIGHBITDEPTH equ 1
|
||||
CONFIG_AV1_TEMPORAL_DENOISING equ 0
|
||||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITRATE_ACCURACY equ 0
|
||||
CONFIG_BITRATE_ACCURACY_BL equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_COMPONENT_TIMING equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_EXCLUDE_SIMD_MISMATCH equ 0
|
||||
CONFIG_FPMT_TEST equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE_2 equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
CONFIG_INTER_STATS_ONLY equ 0
|
||||
CONFIG_LIBYUV equ 0
|
||||
CONFIG_MAX_DECODE_PROFILE equ 2
|
||||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NN_V2 equ 0
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_OPTICAL_FLOW_API equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PARTITION_SEARCH_ORDER equ 0
|
||||
CONFIG_PIC equ 0
|
||||
CONFIG_RATECTRL_LOG equ 0
|
||||
CONFIG_RD_COMMAND equ 0
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REALTIME_ONLY equ 0
|
||||
CONFIG_RT_ML_PARTITIONING equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_TFLITE equ 0
|
||||
CONFIG_THREE_PASS equ 0
|
||||
CONFIG_TUNE_BUTTERAUGLI equ 0
|
||||
CONFIG_TUNE_VMAF equ 0
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
DECODE_WIDTH_LIMIT equ 0
|
||||
FORCE_HIGHBITDEPTH_DECODING equ 0
|
||||
HAVE_AVX equ 1
|
||||
HAVE_AVX2 equ 1
|
||||
HAVE_DSPR2 equ 0
|
||||
HAVE_FEXCEPT equ 1
|
||||
HAVE_MIPS32 equ 0
|
||||
HAVE_MIPS64 equ 0
|
||||
HAVE_MMX equ 1
|
||||
HAVE_MSA equ 0
|
||||
HAVE_NEON equ 0
|
||||
HAVE_SSE equ 1
|
||||
HAVE_SSE2 equ 1
|
||||
HAVE_SSE3 equ 1
|
||||
HAVE_SSE4_1 equ 1
|
||||
HAVE_SSE4_2 equ 1
|
||||
HAVE_SSSE3 equ 1
|
||||
HAVE_VSX equ 0
|
||||
HAVE_WXWIDGETS equ 0
|
||||
STATIC_LINK_JXL equ 0
|
||||
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
#ifndef AOM_CONFIG_H_
|
||||
#define AOM_CONFIG_H_
|
||||
|
||||
#define ARCH_ARM 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_X86 1
|
||||
#define ARCH_X86_64 0
|
||||
#define CONFIG_ACCOUNTING 0
|
||||
#define CONFIG_ANALYZER 0
|
||||
#define CONFIG_AV1_DECODER 1
|
||||
#define CONFIG_AV1_ENCODER 0
|
||||
#define CONFIG_AV1_HIGHBITDEPTH 1
|
||||
#define CONFIG_AV1_TEMPORAL_DENOISING 0
|
||||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITRATE_ACCURACY 0
|
||||
#define CONFIG_BITRATE_ACCURACY_BL 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_COMPONENT_TIMING 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_EXCLUDE_SIMD_MISMATCH 0
|
||||
#define CONFIG_FPMT_TEST 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE_2 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
#define CONFIG_INTER_STATS_ONLY 0
|
||||
#define CONFIG_LIBYUV 0
|
||||
#define CONFIG_MAX_DECODE_PROFILE 2
|
||||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NN_V2 0
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_OPTICAL_FLOW_API 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PARTITION_SEARCH_ORDER 0
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_RATECTRL_LOG 0
|
||||
#define CONFIG_RD_COMMAND 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REALTIME_ONLY 0
|
||||
#define CONFIG_RT_ML_PARTITIONING 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_TFLITE 0
|
||||
#define CONFIG_THREE_PASS 0
|
||||
#define CONFIG_TUNE_BUTTERAUGLI 0
|
||||
#define CONFIG_TUNE_VMAF 0
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
#define DECODE_WIDTH_LIMIT 0
|
||||
#define FORCE_HIGHBITDEPTH_DECODING 0
|
||||
#define HAVE_AVX 1
|
||||
#define HAVE_AVX2 1
|
||||
#define HAVE_DSPR2 0
|
||||
#define HAVE_FEXCEPT 1
|
||||
#define HAVE_MIPS32 0
|
||||
#define HAVE_MIPS64 0
|
||||
#define HAVE_MMX 1
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_NEON 0
|
||||
#define HAVE_SSE 1
|
||||
#define HAVE_SSE2 1
|
||||
#define HAVE_SSE3 1
|
||||
#define HAVE_SSE4_1 1
|
||||
#define HAVE_SSE4_2 1
|
||||
#define HAVE_SSSE3 1
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INLINE inline
|
||||
#define STATIC_LINK_JXL 0
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,100 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AOM_SCALE_RTCD_H_
|
||||
#define AOM_SCALE_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
struct yv12_buffer_config;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void aom_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_borders aom_extend_frame_borders_c
|
||||
|
||||
void aom_extend_frame_borders_y_c(struct yv12_buffer_config *ybf);
|
||||
#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c
|
||||
|
||||
void aom_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c
|
||||
|
||||
void aom_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c
|
||||
|
||||
void aom_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c
|
||||
|
||||
void aom_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_i_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c
|
||||
|
||||
void aom_vertical_band_5_3_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c
|
||||
|
||||
void aom_vertical_band_5_4_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c
|
||||
|
||||
void aom_yv12_copy_frame_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, const int num_planes);
|
||||
#define aom_yv12_copy_frame aom_yv12_copy_frame_c
|
||||
|
||||
void aom_yv12_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_u aom_yv12_copy_u_c
|
||||
|
||||
void aom_yv12_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_v aom_yv12_copy_v_c
|
||||
|
||||
void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
|
||||
#define aom_yv12_copy_y aom_yv12_copy_y_c
|
||||
|
||||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
int aom_yv12_realloc_with_new_border_c(struct yv12_buffer_config *ybf, int new_border, int byte_alignment, int num_planes);
|
||||
#define aom_yv12_realloc_with_new_border aom_yv12_realloc_with_new_border_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/x86.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = x86_simd_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,797 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AV1_RTCD_H_
|
||||
#define AV1_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
/*
|
||||
* AV1
|
||||
*/
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom_dsp/odintrin.h"
|
||||
#include "aom_dsp/txfm_common.h"
|
||||
#include "av1/common/common.h"
|
||||
#include "av1/common/enums.h"
|
||||
#include "av1/common/quant_common.h"
|
||||
#include "av1/common/filter.h"
|
||||
#include "av1/common/convolve.h"
|
||||
#include "av1/common/av1_txfm.h"
|
||||
#include "av1/common/restoration.h"
|
||||
|
||||
struct macroblockd;
|
||||
|
||||
/* Encoder forward decls */
|
||||
struct macroblock;
|
||||
struct txfm_param;
|
||||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
enum { NONE, RELU, SOFTSIGN, SIGMOID } UENUM1BYTE(ACTIVATION);
|
||||
#if CONFIG_NN_V2
|
||||
enum { SOFTMAX_CROSS_ENTROPY } UENUM1BYTE(LOSS);
|
||||
struct NN_CONFIG_V2;
|
||||
typedef struct NN_CONFIG_V2 NN_CONFIG_V2;
|
||||
struct FC_LAYER;
|
||||
typedef struct FC_LAYER FC_LAYER;
|
||||
#endif // CONFIG_NN_V2
|
||||
|
||||
struct CNN_CONFIG;
|
||||
typedef struct CNN_CONFIG CNN_CONFIG;
|
||||
struct CNN_LAYER_CONFIG;
|
||||
typedef struct CNN_LAYER_CONFIG CNN_LAYER_CONFIG;
|
||||
struct CNN_THREAD_DATA;
|
||||
typedef struct CNN_THREAD_DATA CNN_THREAD_DATA;
|
||||
struct CNN_BRANCH_CONFIG;
|
||||
typedef struct CNN_BRANCH_CONFIG CNN_BRANCH_CONFIG;
|
||||
struct CNN_MULTI_OUT;
|
||||
typedef struct CNN_MULTI_OUT CNN_MULTI_OUT;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
#if CONFIG_AV1_HIGHBITDEPTH
|
||||
typedef void (*cfl_subsample_hbd_fn)(const uint16_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
typedef void (*cfl_predict_hbd_fn)(const int16_t *src, uint16_t *dst,
|
||||
int dst_stride, int alpha_q3, int bd);
|
||||
#endif
|
||||
|
||||
typedef void (*cfl_subtract_average_fn)(const uint16_t *src, int16_t *dst);
|
||||
|
||||
typedef void (*cfl_predict_lbd_fn)(const int16_t *src, uint8_t *dst,
|
||||
int dst_stride, int alpha_q3);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void av1_apply_selfguided_restoration_c(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
void av1_apply_selfguided_restoration_sse4_1(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
void av1_apply_selfguided_restoration_avx2(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
RTCD_EXTERN void (*av1_apply_selfguided_restoration)(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
void av1_build_compound_diffwtd_mask_sse4_1(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
void av1_build_compound_diffwtd_mask_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_d16_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
void av1_build_compound_diffwtd_mask_d16_sse4_1(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
void av1_build_compound_diffwtd_mask_d16_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask_d16)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_highbd_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
void av1_build_compound_diffwtd_mask_highbd_ssse3(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
void av1_build_compound_diffwtd_mask_highbd_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask_highbd)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
|
||||
int64_t av1_calc_frame_error_c(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
int64_t av1_calc_frame_error_sse2(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
int64_t av1_calc_frame_error_avx2(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
RTCD_EXTERN int64_t (*av1_calc_frame_error)(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
|
||||
void av1_convolve_2d_scale_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_scale_sse4_1(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_2d_scale)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_2d_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_2d_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_horiz_rs_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
void av1_convolve_horiz_rs_sse4_1(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
RTCD_EXTERN void (*av1_convolve_horiz_rs)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
|
||||
void av1_convolve_x_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_x_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_x_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_x_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_y_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
void av1_convolve_y_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
void av1_convolve_y_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
void av1_dr_prediction_z1_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
void av1_dr_prediction_z1_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z2_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z2_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z3_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_sse4_1(uint8_t *p, int sz, int strength);
|
||||
RTCD_EXTERN void (*av1_filter_intra_edge)(uint8_t *p, int sz, int strength);
|
||||
|
||||
void av1_filter_intra_edge_high_c(uint16_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_high_sse4_1(uint16_t *p, int sz, int strength);
|
||||
RTCD_EXTERN void (*av1_filter_intra_edge_high)(uint16_t *p, int sz, int strength);
|
||||
|
||||
void av1_filter_intra_predictor_c(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
void av1_filter_intra_predictor_sse4_1(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
RTCD_EXTERN void (*av1_filter_intra_predictor)(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
|
||||
void av1_highbd_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8 av1_highbd_convolve8_c
|
||||
|
||||
void av1_highbd_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_c
|
||||
|
||||
void av1_highbd_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_c
|
||||
|
||||
void av1_highbd_convolve_2d_scale_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_scale_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_2d_scale)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_2d_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_2d_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_avg av1_highbd_convolve_avg_c
|
||||
|
||||
void av1_highbd_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_copy av1_highbd_convolve_copy_c
|
||||
|
||||
void av1_highbd_convolve_horiz_rs_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
void av1_highbd_convolve_horiz_rs_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_horiz_rs)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
|
||||
void av1_highbd_convolve_x_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_x_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_x_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_x_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_y_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
void av1_highbd_convolve_y_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
void av1_highbd_convolve_y_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_y_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z1_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z1)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z2_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z2)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z3)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_avx2(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x64 av1_highbd_inv_txfm_add_16x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x64 av1_highbd_inv_txfm_add_32x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x16)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x16 av1_highbd_inv_txfm_add_64x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x32 av1_highbd_inv_txfm_add_64x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x64 av1_highbd_inv_txfm_add_64x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x8_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
void av1_highbd_iwht4x4_16_add_sse4_1(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_iwht4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
|
||||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_highbd_warp_affine_sse4_1(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_highbd_warp_affine_avx2(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
|
||||
void av1_highbd_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_wiener_convolve_add_src_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_wiener_convolve_add_src_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_wiener_convolve_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x4 av1_inv_txfm2d_add_16x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x64 av1_inv_txfm2d_add_16x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x64 av1_inv_txfm2d_add_32x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x8 av1_inv_txfm2d_add_32x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x16 av1_inv_txfm2d_add_4x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_4x4_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x4)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x16 av1_inv_txfm2d_add_64x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x32 av1_inv_txfm2d_add_64x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x32 av1_inv_txfm2d_add_8x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_8x8_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x8)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_inv_txfm_add_ssse3(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_resize_and_extend_frame_c(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
void av1_resize_and_extend_frame_ssse3(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
RTCD_EXTERN void (*av1_resize_and_extend_frame)(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
int av1_selfguided_restoration_sse4_1(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
int av1_selfguided_restoration_avx2(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
RTCD_EXTERN int (*av1_selfguided_restoration)(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
|
||||
void av1_upsample_intra_edge_c(uint8_t *p, int sz);
|
||||
void av1_upsample_intra_edge_sse4_1(uint8_t *p, int sz);
|
||||
RTCD_EXTERN void (*av1_upsample_intra_edge)(uint8_t *p, int sz);
|
||||
|
||||
void av1_upsample_intra_edge_high_c(uint16_t *p, int sz, int bd);
|
||||
void av1_upsample_intra_edge_high_sse4_1(uint16_t *p, int sz, int bd);
|
||||
RTCD_EXTERN void (*av1_upsample_intra_edge_high)(uint16_t *p, int sz, int bd);
|
||||
|
||||
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_warp_affine_sse4_1(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_warp_affine_avx2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
|
||||
void av1_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
void av1_wiener_convolve_add_src_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
void av1_wiener_convolve_add_src_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_copy_rect8_16bit_to_16bit_c(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_16bit_to_16bit)(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_copy_rect8_8bit_to_16bit_c(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_8bit_to_16bit)(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_filter_16_0_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_0)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_1_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_1)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_2_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_2)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_3_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_3)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_0_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_0)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_1_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_1)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_2_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_2)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_3_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_3)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_ssse3(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse4_1(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_avx2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
RTCD_EXTERN int (*cdef_find_dir)(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
||||
void cdef_find_dir_dual_c(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_sse2(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_ssse3(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_sse4_1(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_avx2(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
RTCD_EXTERN void (*cdef_find_dir_dual)(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_420_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_420_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_422_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_422_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_444_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_444_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_ssse3(TX_SIZE tx_size);
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_hbd_fn (*cfl_get_predict_hbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_ssse3(TX_SIZE tx_size);
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_lbd_fn (*cfl_get_predict_lbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_c(TX_SIZE tx_size);
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_sse2(TX_SIZE tx_size);
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subtract_average_fn (*cfl_get_subtract_average_fn)(TX_SIZE tx_size);
|
||||
|
||||
void av1_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/x86.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = x86_simd_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_avx2;
|
||||
av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_c;
|
||||
if (flags & HAS_SSE4_1) av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_avx2;
|
||||
av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_c;
|
||||
if (flags & HAS_SSE4_1) av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_avx2;
|
||||
av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_c;
|
||||
if (flags & HAS_SSSE3) av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_ssse3;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_avx2;
|
||||
av1_calc_frame_error = av1_calc_frame_error_c;
|
||||
if (flags & HAS_SSE2) av1_calc_frame_error = av1_calc_frame_error_sse2;
|
||||
if (flags & HAS_AVX2) av1_calc_frame_error = av1_calc_frame_error_avx2;
|
||||
av1_convolve_2d_scale = av1_convolve_2d_scale_c;
|
||||
if (flags & HAS_SSE4_1) av1_convolve_2d_scale = av1_convolve_2d_scale_sse4_1;
|
||||
av1_convolve_2d_sr = av1_convolve_2d_sr_c;
|
||||
if (flags & HAS_SSE2) av1_convolve_2d_sr = av1_convolve_2d_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_2d_sr = av1_convolve_2d_sr_avx2;
|
||||
av1_convolve_horiz_rs = av1_convolve_horiz_rs_c;
|
||||
if (flags & HAS_SSE4_1) av1_convolve_horiz_rs = av1_convolve_horiz_rs_sse4_1;
|
||||
av1_convolve_x_sr = av1_convolve_x_sr_c;
|
||||
if (flags & HAS_SSE2) av1_convolve_x_sr = av1_convolve_x_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_x_sr = av1_convolve_x_sr_avx2;
|
||||
av1_convolve_y_sr = av1_convolve_y_sr_c;
|
||||
if (flags & HAS_SSE2) av1_convolve_y_sr = av1_convolve_y_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_y_sr = av1_convolve_y_sr_avx2;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_sse2;
|
||||
if (flags & HAS_SSSE3) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_avx2;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_avx2;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_avx2;
|
||||
av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z1 = av1_dr_prediction_z1_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
|
||||
av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z2 = av1_dr_prediction_z2_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
|
||||
av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z3 = av1_dr_prediction_z3_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
|
||||
av1_filter_intra_edge = av1_filter_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
|
||||
av1_filter_intra_edge_high = av1_filter_intra_edge_high_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge_high = av1_filter_intra_edge_high_sse4_1;
|
||||
av1_filter_intra_predictor = av1_filter_intra_predictor_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_predictor = av1_filter_intra_predictor_sse4_1;
|
||||
av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_sse4_1;
|
||||
av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_avx2;
|
||||
av1_highbd_convolve_horiz_rs = av1_highbd_convolve_horiz_rs_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_convolve_horiz_rs = av1_highbd_convolve_horiz_rs_sse4_1;
|
||||
av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_avx2;
|
||||
av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_avx2;
|
||||
av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_avx2;
|
||||
av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
|
||||
av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_avx2;
|
||||
av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
|
||||
av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
|
||||
av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
|
||||
av1_highbd_iwht4x4_16_add = av1_highbd_iwht4x4_16_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_iwht4x4_16_add = av1_highbd_iwht4x4_16_add_sse4_1;
|
||||
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_warp_affine = av1_highbd_warp_affine_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_warp_affine = av1_highbd_warp_affine_avx2;
|
||||
av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_avx2;
|
||||
av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_sse4_1;
|
||||
av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_sse4_1;
|
||||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_SSSE3) av1_inv_txfm_add = av1_inv_txfm_add_ssse3;
|
||||
if (flags & HAS_AVX2) av1_inv_txfm_add = av1_inv_txfm_add_avx2;
|
||||
av1_resize_and_extend_frame = av1_resize_and_extend_frame_c;
|
||||
if (flags & HAS_SSSE3) av1_resize_and_extend_frame = av1_resize_and_extend_frame_ssse3;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_selfguided_restoration = av1_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_selfguided_restoration = av1_selfguided_restoration_avx2;
|
||||
av1_upsample_intra_edge = av1_upsample_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_upsample_intra_edge = av1_upsample_intra_edge_sse4_1;
|
||||
av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_c;
|
||||
if (flags & HAS_SSE4_1) av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_sse4_1;
|
||||
av1_warp_affine = av1_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_warp_affine = av1_warp_affine_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_warp_affine = av1_warp_affine_avx2;
|
||||
av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_c;
|
||||
if (flags & HAS_SSE2) av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_sse2;
|
||||
if (flags & HAS_AVX2) av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_avx2;
|
||||
cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_c;
|
||||
if (flags & HAS_SSE2) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_avx2;
|
||||
cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_c;
|
||||
if (flags & HAS_SSE2) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_avx2;
|
||||
cdef_filter_16_0 = cdef_filter_16_0_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_16_0 = cdef_filter_16_0_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_0 = cdef_filter_16_0_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_0 = cdef_filter_16_0_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_0 = cdef_filter_16_0_avx2;
|
||||
cdef_filter_16_1 = cdef_filter_16_1_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_16_1 = cdef_filter_16_1_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_1 = cdef_filter_16_1_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_1 = cdef_filter_16_1_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_1 = cdef_filter_16_1_avx2;
|
||||
cdef_filter_16_2 = cdef_filter_16_2_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_16_2 = cdef_filter_16_2_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_2 = cdef_filter_16_2_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_2 = cdef_filter_16_2_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_2 = cdef_filter_16_2_avx2;
|
||||
cdef_filter_16_3 = cdef_filter_16_3_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_16_3 = cdef_filter_16_3_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_3 = cdef_filter_16_3_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_3 = cdef_filter_16_3_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_3 = cdef_filter_16_3_avx2;
|
||||
cdef_filter_8_0 = cdef_filter_8_0_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_8_0 = cdef_filter_8_0_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_0 = cdef_filter_8_0_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_0 = cdef_filter_8_0_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_0 = cdef_filter_8_0_avx2;
|
||||
cdef_filter_8_1 = cdef_filter_8_1_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_8_1 = cdef_filter_8_1_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_1 = cdef_filter_8_1_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_1 = cdef_filter_8_1_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_1 = cdef_filter_8_1_avx2;
|
||||
cdef_filter_8_2 = cdef_filter_8_2_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_8_2 = cdef_filter_8_2_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_2 = cdef_filter_8_2_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_2 = cdef_filter_8_2_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_2 = cdef_filter_8_2_avx2;
|
||||
cdef_filter_8_3 = cdef_filter_8_3_c;
|
||||
if (flags & HAS_SSE2) cdef_filter_8_3 = cdef_filter_8_3_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_3 = cdef_filter_8_3_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_3 = cdef_filter_8_3_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_3 = cdef_filter_8_3_avx2;
|
||||
cdef_find_dir = cdef_find_dir_c;
|
||||
if (flags & HAS_SSE2) cdef_find_dir = cdef_find_dir_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_find_dir = cdef_find_dir_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_find_dir = cdef_find_dir_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_find_dir = cdef_find_dir_avx2;
|
||||
cdef_find_dir_dual = cdef_find_dir_dual_c;
|
||||
if (flags & HAS_SSE2) cdef_find_dir_dual = cdef_find_dir_dual_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_find_dir_dual = cdef_find_dir_dual_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_find_dir_dual = cdef_find_dir_dual_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_find_dir_dual = cdef_find_dir_dual_avx2;
|
||||
cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_avx2;
|
||||
cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_avx2;
|
||||
cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_avx2;
|
||||
cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_avx2;
|
||||
cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_avx2;
|
||||
cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_avx2;
|
||||
cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_avx2;
|
||||
cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_avx2;
|
||||
cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_c;
|
||||
if (flags & HAS_SSE2) cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_sse2;
|
||||
if (flags & HAS_AVX2) cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_avx2;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,90 +0,0 @@
|
||||
;
|
||||
; Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
;
|
||||
; This source code is subject to the terms of the BSD 2 Clause License and
|
||||
; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
; was not distributed with this source code in the LICENSE file, you can
|
||||
; obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
; Media Patent License 1.0 was not distributed with this source code in the
|
||||
; PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
;
|
||||
|
||||
ARCH_ARM equ 0
|
||||
ARCH_MIPS equ 0
|
||||
ARCH_PPC equ 0
|
||||
ARCH_X86 equ 0
|
||||
ARCH_X86_64 equ 1
|
||||
CONFIG_ACCOUNTING equ 0
|
||||
CONFIG_ANALYZER equ 0
|
||||
CONFIG_AV1_DECODER equ 1
|
||||
CONFIG_AV1_ENCODER equ 0
|
||||
CONFIG_AV1_HIGHBITDEPTH equ 1
|
||||
CONFIG_AV1_TEMPORAL_DENOISING equ 0
|
||||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITRATE_ACCURACY equ 0
|
||||
CONFIG_BITRATE_ACCURACY_BL equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_COMPONENT_TIMING equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_EXCLUDE_SIMD_MISMATCH equ 0
|
||||
CONFIG_FPMT_TEST equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE_2 equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
CONFIG_INTER_STATS_ONLY equ 0
|
||||
CONFIG_LIBYUV equ 0
|
||||
CONFIG_MAX_DECODE_PROFILE equ 2
|
||||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NN_V2 equ 0
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_OPTICAL_FLOW_API equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PARTITION_SEARCH_ORDER equ 0
|
||||
CONFIG_PIC equ 0
|
||||
CONFIG_RATECTRL_LOG equ 0
|
||||
CONFIG_RD_COMMAND equ 0
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REALTIME_ONLY equ 0
|
||||
CONFIG_RT_ML_PARTITIONING equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_TFLITE equ 0
|
||||
CONFIG_THREE_PASS equ 0
|
||||
CONFIG_TUNE_BUTTERAUGLI equ 0
|
||||
CONFIG_TUNE_VMAF equ 0
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
DECODE_WIDTH_LIMIT equ 0
|
||||
FORCE_HIGHBITDEPTH_DECODING equ 0
|
||||
HAVE_AVX equ 1
|
||||
HAVE_AVX2 equ 1
|
||||
HAVE_DSPR2 equ 0
|
||||
HAVE_FEXCEPT equ 1
|
||||
HAVE_MIPS32 equ 0
|
||||
HAVE_MIPS64 equ 0
|
||||
HAVE_MMX equ 1
|
||||
HAVE_MSA equ 0
|
||||
HAVE_NEON equ 0
|
||||
HAVE_SSE equ 1
|
||||
HAVE_SSE2 equ 1
|
||||
HAVE_SSE3 equ 1
|
||||
HAVE_SSE4_1 equ 1
|
||||
HAVE_SSE4_2 equ 1
|
||||
HAVE_SSSE3 equ 1
|
||||
HAVE_VSX equ 0
|
||||
HAVE_WXWIDGETS equ 0
|
||||
STATIC_LINK_JXL equ 0
|
||||
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
#ifndef AOM_CONFIG_H_
|
||||
#define AOM_CONFIG_H_
|
||||
|
||||
#define ARCH_ARM 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_X86 0
|
||||
#define ARCH_X86_64 1
|
||||
#define CONFIG_ACCOUNTING 0
|
||||
#define CONFIG_ANALYZER 0
|
||||
#define CONFIG_AV1_DECODER 1
|
||||
#define CONFIG_AV1_ENCODER 0
|
||||
#define CONFIG_AV1_HIGHBITDEPTH 1
|
||||
#define CONFIG_AV1_TEMPORAL_DENOISING 0
|
||||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITRATE_ACCURACY 0
|
||||
#define CONFIG_BITRATE_ACCURACY_BL 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_COMPONENT_TIMING 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_EXCLUDE_SIMD_MISMATCH 0
|
||||
#define CONFIG_FPMT_TEST 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE_2 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
#define CONFIG_INTER_STATS_ONLY 0
|
||||
#define CONFIG_LIBYUV 0
|
||||
#define CONFIG_MAX_DECODE_PROFILE 2
|
||||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NN_V2 0
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_OPTICAL_FLOW_API 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PARTITION_SEARCH_ORDER 0
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_RATECTRL_LOG 0
|
||||
#define CONFIG_RD_COMMAND 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REALTIME_ONLY 0
|
||||
#define CONFIG_RT_ML_PARTITIONING 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_TFLITE 0
|
||||
#define CONFIG_THREE_PASS 0
|
||||
#define CONFIG_TUNE_BUTTERAUGLI 0
|
||||
#define CONFIG_TUNE_VMAF 0
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
#define DECODE_WIDTH_LIMIT 0
|
||||
#define FORCE_HIGHBITDEPTH_DECODING 0
|
||||
#define HAVE_AVX 1
|
||||
#define HAVE_AVX2 1
|
||||
#define HAVE_DSPR2 0
|
||||
#define HAVE_FEXCEPT 1
|
||||
#define HAVE_MIPS32 0
|
||||
#define HAVE_MIPS64 0
|
||||
#define HAVE_MMX 1
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_NEON 0
|
||||
#define HAVE_SSE 1
|
||||
#define HAVE_SSE2 1
|
||||
#define HAVE_SSE3 1
|
||||
#define HAVE_SSE4_1 1
|
||||
#define HAVE_SSE4_2 1
|
||||
#define HAVE_SSSE3 1
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INLINE inline
|
||||
#define STATIC_LINK_JXL 0
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,100 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AOM_SCALE_RTCD_H_
|
||||
#define AOM_SCALE_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
struct yv12_buffer_config;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void aom_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_borders aom_extend_frame_borders_c
|
||||
|
||||
void aom_extend_frame_borders_y_c(struct yv12_buffer_config *ybf);
|
||||
#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c
|
||||
|
||||
void aom_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c
|
||||
|
||||
void aom_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c
|
||||
|
||||
void aom_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c
|
||||
|
||||
void aom_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_i_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c
|
||||
|
||||
void aom_vertical_band_5_3_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c
|
||||
|
||||
void aom_vertical_band_5_4_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c
|
||||
|
||||
void aom_yv12_copy_frame_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, const int num_planes);
|
||||
#define aom_yv12_copy_frame aom_yv12_copy_frame_c
|
||||
|
||||
void aom_yv12_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_u aom_yv12_copy_u_c
|
||||
|
||||
void aom_yv12_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_v aom_yv12_copy_v_c
|
||||
|
||||
void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
|
||||
#define aom_yv12_copy_y aom_yv12_copy_y_c
|
||||
|
||||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
int aom_yv12_realloc_with_new_border_c(struct yv12_buffer_config *ybf, int new_border, int byte_alignment, int num_planes);
|
||||
#define aom_yv12_realloc_with_new_border aom_yv12_realloc_with_new_border_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/x86.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = x86_simd_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,778 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AV1_RTCD_H_
|
||||
#define AV1_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
/*
|
||||
* AV1
|
||||
*/
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom_dsp/odintrin.h"
|
||||
#include "aom_dsp/txfm_common.h"
|
||||
#include "av1/common/common.h"
|
||||
#include "av1/common/enums.h"
|
||||
#include "av1/common/quant_common.h"
|
||||
#include "av1/common/filter.h"
|
||||
#include "av1/common/convolve.h"
|
||||
#include "av1/common/av1_txfm.h"
|
||||
#include "av1/common/restoration.h"
|
||||
|
||||
struct macroblockd;
|
||||
|
||||
/* Encoder forward decls */
|
||||
struct macroblock;
|
||||
struct txfm_param;
|
||||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
enum { NONE, RELU, SOFTSIGN, SIGMOID } UENUM1BYTE(ACTIVATION);
|
||||
#if CONFIG_NN_V2
|
||||
enum { SOFTMAX_CROSS_ENTROPY } UENUM1BYTE(LOSS);
|
||||
struct NN_CONFIG_V2;
|
||||
typedef struct NN_CONFIG_V2 NN_CONFIG_V2;
|
||||
struct FC_LAYER;
|
||||
typedef struct FC_LAYER FC_LAYER;
|
||||
#endif // CONFIG_NN_V2
|
||||
|
||||
struct CNN_CONFIG;
|
||||
typedef struct CNN_CONFIG CNN_CONFIG;
|
||||
struct CNN_LAYER_CONFIG;
|
||||
typedef struct CNN_LAYER_CONFIG CNN_LAYER_CONFIG;
|
||||
struct CNN_THREAD_DATA;
|
||||
typedef struct CNN_THREAD_DATA CNN_THREAD_DATA;
|
||||
struct CNN_BRANCH_CONFIG;
|
||||
typedef struct CNN_BRANCH_CONFIG CNN_BRANCH_CONFIG;
|
||||
struct CNN_MULTI_OUT;
|
||||
typedef struct CNN_MULTI_OUT CNN_MULTI_OUT;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
#if CONFIG_AV1_HIGHBITDEPTH
|
||||
typedef void (*cfl_subsample_hbd_fn)(const uint16_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
typedef void (*cfl_predict_hbd_fn)(const int16_t *src, uint16_t *dst,
|
||||
int dst_stride, int alpha_q3, int bd);
|
||||
#endif
|
||||
|
||||
typedef void (*cfl_subtract_average_fn)(const uint16_t *src, int16_t *dst);
|
||||
|
||||
typedef void (*cfl_predict_lbd_fn)(const int16_t *src, uint8_t *dst,
|
||||
int dst_stride, int alpha_q3);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void av1_apply_selfguided_restoration_c(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
void av1_apply_selfguided_restoration_sse4_1(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
void av1_apply_selfguided_restoration_avx2(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
RTCD_EXTERN void (*av1_apply_selfguided_restoration)(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
void av1_build_compound_diffwtd_mask_sse4_1(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
void av1_build_compound_diffwtd_mask_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_d16_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
void av1_build_compound_diffwtd_mask_d16_sse4_1(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
void av1_build_compound_diffwtd_mask_d16_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask_d16)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_highbd_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
void av1_build_compound_diffwtd_mask_highbd_ssse3(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
void av1_build_compound_diffwtd_mask_highbd_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask_highbd)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
|
||||
int64_t av1_calc_frame_error_c(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
int64_t av1_calc_frame_error_sse2(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
int64_t av1_calc_frame_error_avx2(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
RTCD_EXTERN int64_t (*av1_calc_frame_error)(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
|
||||
void av1_convolve_2d_scale_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_scale_sse4_1(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_2d_scale)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_2d_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_2d_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_horiz_rs_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
void av1_convolve_horiz_rs_sse4_1(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
RTCD_EXTERN void (*av1_convolve_horiz_rs)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
|
||||
void av1_convolve_x_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_x_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_x_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_x_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_y_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
void av1_convolve_y_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
void av1_convolve_y_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
void av1_dr_prediction_z1_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
void av1_dr_prediction_z1_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z2_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z2_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z3_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_sse4_1(uint8_t *p, int sz, int strength);
|
||||
RTCD_EXTERN void (*av1_filter_intra_edge)(uint8_t *p, int sz, int strength);
|
||||
|
||||
void av1_filter_intra_edge_high_c(uint16_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_high_sse4_1(uint16_t *p, int sz, int strength);
|
||||
RTCD_EXTERN void (*av1_filter_intra_edge_high)(uint16_t *p, int sz, int strength);
|
||||
|
||||
void av1_filter_intra_predictor_c(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
void av1_filter_intra_predictor_sse4_1(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
RTCD_EXTERN void (*av1_filter_intra_predictor)(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
|
||||
void av1_highbd_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
void av1_highbd_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8 av1_highbd_convolve8_sse2
|
||||
|
||||
void av1_highbd_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
void av1_highbd_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_sse2
|
||||
|
||||
void av1_highbd_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
void av1_highbd_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_sse2
|
||||
|
||||
void av1_highbd_convolve_2d_scale_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_scale_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_2d_scale)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_2d_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_2d_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_avg av1_highbd_convolve_avg_c
|
||||
|
||||
void av1_highbd_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_copy av1_highbd_convolve_copy_c
|
||||
|
||||
void av1_highbd_convolve_horiz_rs_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
void av1_highbd_convolve_horiz_rs_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_horiz_rs)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
|
||||
void av1_highbd_convolve_x_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_x_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_x_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_x_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_y_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
void av1_highbd_convolve_y_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
void av1_highbd_convolve_y_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_y_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z1_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z1)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z2_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z2)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z3)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_avx2(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x64 av1_highbd_inv_txfm_add_16x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x64 av1_highbd_inv_txfm_add_32x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x16)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x16 av1_highbd_inv_txfm_add_64x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x32 av1_highbd_inv_txfm_add_64x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x64 av1_highbd_inv_txfm_add_64x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x8_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
void av1_highbd_iwht4x4_16_add_sse4_1(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_iwht4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
|
||||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_highbd_warp_affine_sse4_1(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_highbd_warp_affine_avx2(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
|
||||
void av1_highbd_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_wiener_convolve_add_src_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_wiener_convolve_add_src_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_wiener_convolve_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x4 av1_inv_txfm2d_add_16x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x64 av1_inv_txfm2d_add_16x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x64 av1_inv_txfm2d_add_32x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x8 av1_inv_txfm2d_add_32x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x16 av1_inv_txfm2d_add_4x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_4x4_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x4)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x16 av1_inv_txfm2d_add_64x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x32 av1_inv_txfm2d_add_64x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x32 av1_inv_txfm2d_add_8x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_8x8_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x8)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_inv_txfm_add_ssse3(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_resize_and_extend_frame_c(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
void av1_resize_and_extend_frame_ssse3(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
RTCD_EXTERN void (*av1_resize_and_extend_frame)(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
int av1_selfguided_restoration_sse4_1(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
int av1_selfguided_restoration_avx2(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
RTCD_EXTERN int (*av1_selfguided_restoration)(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
|
||||
void av1_upsample_intra_edge_c(uint8_t *p, int sz);
|
||||
void av1_upsample_intra_edge_sse4_1(uint8_t *p, int sz);
|
||||
RTCD_EXTERN void (*av1_upsample_intra_edge)(uint8_t *p, int sz);
|
||||
|
||||
void av1_upsample_intra_edge_high_c(uint16_t *p, int sz, int bd);
|
||||
void av1_upsample_intra_edge_high_sse4_1(uint16_t *p, int sz, int bd);
|
||||
RTCD_EXTERN void (*av1_upsample_intra_edge_high)(uint16_t *p, int sz, int bd);
|
||||
|
||||
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_warp_affine_sse4_1(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_warp_affine_avx2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
|
||||
void av1_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
void av1_wiener_convolve_add_src_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
void av1_wiener_convolve_add_src_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_copy_rect8_16bit_to_16bit_c(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_16bit_to_16bit)(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_copy_rect8_8bit_to_16bit_c(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_8bit_to_16bit)(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_filter_16_0_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_0)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_1_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_1)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_2_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_2)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_3_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_3)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_0_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_0)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_1_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_1)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_2_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_2)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_3_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_3)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_ssse3(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse4_1(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_avx2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
RTCD_EXTERN int (*cdef_find_dir)(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
||||
void cdef_find_dir_dual_c(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_sse2(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_ssse3(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_sse4_1(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_avx2(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
RTCD_EXTERN void (*cdef_find_dir_dual)(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_420_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_420_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_422_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_422_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_444_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_444_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_ssse3(TX_SIZE tx_size);
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_hbd_fn (*cfl_get_predict_hbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_ssse3(TX_SIZE tx_size);
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_lbd_fn (*cfl_get_predict_lbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_c(TX_SIZE tx_size);
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_sse2(TX_SIZE tx_size);
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subtract_average_fn (*cfl_get_subtract_average_fn)(TX_SIZE tx_size);
|
||||
|
||||
void av1_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/x86.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = x86_simd_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_avx2;
|
||||
av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_c;
|
||||
if (flags & HAS_SSE4_1) av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_avx2;
|
||||
av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_c;
|
||||
if (flags & HAS_SSE4_1) av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_avx2;
|
||||
av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_c;
|
||||
if (flags & HAS_SSSE3) av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_ssse3;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_avx2;
|
||||
av1_calc_frame_error = av1_calc_frame_error_sse2;
|
||||
if (flags & HAS_AVX2) av1_calc_frame_error = av1_calc_frame_error_avx2;
|
||||
av1_convolve_2d_scale = av1_convolve_2d_scale_c;
|
||||
if (flags & HAS_SSE4_1) av1_convolve_2d_scale = av1_convolve_2d_scale_sse4_1;
|
||||
av1_convolve_2d_sr = av1_convolve_2d_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_2d_sr = av1_convolve_2d_sr_avx2;
|
||||
av1_convolve_horiz_rs = av1_convolve_horiz_rs_c;
|
||||
if (flags & HAS_SSE4_1) av1_convolve_horiz_rs = av1_convolve_horiz_rs_sse4_1;
|
||||
av1_convolve_x_sr = av1_convolve_x_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_x_sr = av1_convolve_x_sr_avx2;
|
||||
av1_convolve_y_sr = av1_convolve_y_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_y_sr = av1_convolve_y_sr_avx2;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_sse2;
|
||||
if (flags & HAS_SSSE3) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_avx2;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_avx2;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_avx2;
|
||||
av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z1 = av1_dr_prediction_z1_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
|
||||
av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z2 = av1_dr_prediction_z2_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
|
||||
av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z3 = av1_dr_prediction_z3_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
|
||||
av1_filter_intra_edge = av1_filter_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
|
||||
av1_filter_intra_edge_high = av1_filter_intra_edge_high_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge_high = av1_filter_intra_edge_high_sse4_1;
|
||||
av1_filter_intra_predictor = av1_filter_intra_predictor_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_predictor = av1_filter_intra_predictor_sse4_1;
|
||||
av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_sse4_1;
|
||||
av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_avx2;
|
||||
av1_highbd_convolve_horiz_rs = av1_highbd_convolve_horiz_rs_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_convolve_horiz_rs = av1_highbd_convolve_horiz_rs_sse4_1;
|
||||
av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_avx2;
|
||||
av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_avx2;
|
||||
av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_avx2;
|
||||
av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
|
||||
av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_avx2;
|
||||
av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
|
||||
av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
|
||||
av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
|
||||
av1_highbd_iwht4x4_16_add = av1_highbd_iwht4x4_16_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_iwht4x4_16_add = av1_highbd_iwht4x4_16_add_sse4_1;
|
||||
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_warp_affine = av1_highbd_warp_affine_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_warp_affine = av1_highbd_warp_affine_avx2;
|
||||
av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_avx2;
|
||||
av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_sse4_1;
|
||||
av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_sse4_1;
|
||||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_SSSE3) av1_inv_txfm_add = av1_inv_txfm_add_ssse3;
|
||||
if (flags & HAS_AVX2) av1_inv_txfm_add = av1_inv_txfm_add_avx2;
|
||||
av1_resize_and_extend_frame = av1_resize_and_extend_frame_c;
|
||||
if (flags & HAS_SSSE3) av1_resize_and_extend_frame = av1_resize_and_extend_frame_ssse3;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_selfguided_restoration = av1_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_selfguided_restoration = av1_selfguided_restoration_avx2;
|
||||
av1_upsample_intra_edge = av1_upsample_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_upsample_intra_edge = av1_upsample_intra_edge_sse4_1;
|
||||
av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_c;
|
||||
if (flags & HAS_SSE4_1) av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_sse4_1;
|
||||
av1_warp_affine = av1_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_warp_affine = av1_warp_affine_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_warp_affine = av1_warp_affine_avx2;
|
||||
av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_sse2;
|
||||
if (flags & HAS_AVX2) av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_avx2;
|
||||
cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_avx2;
|
||||
cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_avx2;
|
||||
cdef_filter_16_0 = cdef_filter_16_0_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_0 = cdef_filter_16_0_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_0 = cdef_filter_16_0_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_0 = cdef_filter_16_0_avx2;
|
||||
cdef_filter_16_1 = cdef_filter_16_1_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_1 = cdef_filter_16_1_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_1 = cdef_filter_16_1_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_1 = cdef_filter_16_1_avx2;
|
||||
cdef_filter_16_2 = cdef_filter_16_2_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_2 = cdef_filter_16_2_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_2 = cdef_filter_16_2_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_2 = cdef_filter_16_2_avx2;
|
||||
cdef_filter_16_3 = cdef_filter_16_3_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_3 = cdef_filter_16_3_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_3 = cdef_filter_16_3_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_3 = cdef_filter_16_3_avx2;
|
||||
cdef_filter_8_0 = cdef_filter_8_0_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_0 = cdef_filter_8_0_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_0 = cdef_filter_8_0_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_0 = cdef_filter_8_0_avx2;
|
||||
cdef_filter_8_1 = cdef_filter_8_1_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_1 = cdef_filter_8_1_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_1 = cdef_filter_8_1_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_1 = cdef_filter_8_1_avx2;
|
||||
cdef_filter_8_2 = cdef_filter_8_2_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_2 = cdef_filter_8_2_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_2 = cdef_filter_8_2_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_2 = cdef_filter_8_2_avx2;
|
||||
cdef_filter_8_3 = cdef_filter_8_3_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_3 = cdef_filter_8_3_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_3 = cdef_filter_8_3_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_3 = cdef_filter_8_3_avx2;
|
||||
cdef_find_dir = cdef_find_dir_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_find_dir = cdef_find_dir_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_find_dir = cdef_find_dir_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_find_dir = cdef_find_dir_avx2;
|
||||
cdef_find_dir_dual = cdef_find_dir_dual_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_find_dir_dual = cdef_find_dir_dual_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_find_dir_dual = cdef_find_dir_dual_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_find_dir_dual = cdef_find_dir_dual_avx2;
|
||||
cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_avx2;
|
||||
cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_avx2;
|
||||
cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_avx2;
|
||||
cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_avx2;
|
||||
cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_avx2;
|
||||
cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_avx2;
|
||||
cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_avx2;
|
||||
cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_avx2;
|
||||
cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_sse2;
|
||||
if (flags & HAS_AVX2) cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_avx2;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,90 +0,0 @@
|
||||
;
|
||||
; Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
;
|
||||
; This source code is subject to the terms of the BSD 2 Clause License and
|
||||
; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
; was not distributed with this source code in the LICENSE file, you can
|
||||
; obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
; Media Patent License 1.0 was not distributed with this source code in the
|
||||
; PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
;
|
||||
|
||||
ARCH_ARM equ 0
|
||||
ARCH_MIPS equ 0
|
||||
ARCH_PPC equ 0
|
||||
ARCH_X86 equ 0
|
||||
ARCH_X86_64 equ 1
|
||||
CONFIG_ACCOUNTING equ 0
|
||||
CONFIG_ANALYZER equ 0
|
||||
CONFIG_AV1_DECODER equ 1
|
||||
CONFIG_AV1_ENCODER equ 0
|
||||
CONFIG_AV1_HIGHBITDEPTH equ 1
|
||||
CONFIG_AV1_TEMPORAL_DENOISING equ 0
|
||||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITRATE_ACCURACY equ 0
|
||||
CONFIG_BITRATE_ACCURACY_BL equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_COMPONENT_TIMING equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_EXCLUDE_SIMD_MISMATCH equ 0
|
||||
CONFIG_FPMT_TEST equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE equ 0
|
||||
CONFIG_FRAME_PARALLEL_ENCODE_2 equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
CONFIG_INTER_STATS_ONLY equ 0
|
||||
CONFIG_LIBYUV equ 0
|
||||
CONFIG_MAX_DECODE_PROFILE equ 2
|
||||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NN_V2 equ 0
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_OPTICAL_FLOW_API equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PARTITION_SEARCH_ORDER equ 0
|
||||
CONFIG_PIC equ 0
|
||||
CONFIG_RATECTRL_LOG equ 0
|
||||
CONFIG_RD_COMMAND equ 0
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REALTIME_ONLY equ 0
|
||||
CONFIG_RT_ML_PARTITIONING equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_TFLITE equ 0
|
||||
CONFIG_THREE_PASS equ 0
|
||||
CONFIG_TUNE_BUTTERAUGLI equ 0
|
||||
CONFIG_TUNE_VMAF equ 0
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
DECODE_WIDTH_LIMIT equ 0
|
||||
FORCE_HIGHBITDEPTH_DECODING equ 0
|
||||
HAVE_AVX equ 1
|
||||
HAVE_AVX2 equ 1
|
||||
HAVE_DSPR2 equ 0
|
||||
HAVE_FEXCEPT equ 1
|
||||
HAVE_MIPS32 equ 0
|
||||
HAVE_MIPS64 equ 0
|
||||
HAVE_MMX equ 1
|
||||
HAVE_MSA equ 0
|
||||
HAVE_NEON equ 0
|
||||
HAVE_SSE equ 1
|
||||
HAVE_SSE2 equ 1
|
||||
HAVE_SSE3 equ 1
|
||||
HAVE_SSE4_1 equ 1
|
||||
HAVE_SSE4_2 equ 1
|
||||
HAVE_SSSE3 equ 1
|
||||
HAVE_VSX equ 0
|
||||
HAVE_WXWIDGETS equ 0
|
||||
STATIC_LINK_JXL equ 0
|
||||
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
#ifndef AOM_CONFIG_H_
|
||||
#define AOM_CONFIG_H_
|
||||
|
||||
#define ARCH_ARM 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_X86 0
|
||||
#define ARCH_X86_64 1
|
||||
#define CONFIG_ACCOUNTING 0
|
||||
#define CONFIG_ANALYZER 0
|
||||
#define CONFIG_AV1_DECODER 1
|
||||
#define CONFIG_AV1_ENCODER 0
|
||||
#define CONFIG_AV1_HIGHBITDEPTH 1
|
||||
#define CONFIG_AV1_TEMPORAL_DENOISING 0
|
||||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITRATE_ACCURACY 0
|
||||
#define CONFIG_BITRATE_ACCURACY_BL 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_COMPONENT_TIMING 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_EXCLUDE_SIMD_MISMATCH 0
|
||||
#define CONFIG_FPMT_TEST 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE 0
|
||||
#define CONFIG_FRAME_PARALLEL_ENCODE_2 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
#define CONFIG_INTER_STATS_ONLY 0
|
||||
#define CONFIG_LIBYUV 0
|
||||
#define CONFIG_MAX_DECODE_PROFILE 2
|
||||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NN_V2 0
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_OPTICAL_FLOW_API 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PARTITION_SEARCH_ORDER 0
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_RATECTRL_LOG 0
|
||||
#define CONFIG_RD_COMMAND 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REALTIME_ONLY 0
|
||||
#define CONFIG_RT_ML_PARTITIONING 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_TFLITE 0
|
||||
#define CONFIG_THREE_PASS 0
|
||||
#define CONFIG_TUNE_BUTTERAUGLI 0
|
||||
#define CONFIG_TUNE_VMAF 0
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
#define DECODE_WIDTH_LIMIT 0
|
||||
#define FORCE_HIGHBITDEPTH_DECODING 0
|
||||
#define HAVE_AVX 1
|
||||
#define HAVE_AVX2 1
|
||||
#define HAVE_DSPR2 0
|
||||
#define HAVE_FEXCEPT 1
|
||||
#define HAVE_MIPS32 0
|
||||
#define HAVE_MIPS64 0
|
||||
#define HAVE_MMX 1
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_NEON 0
|
||||
#define HAVE_SSE 1
|
||||
#define HAVE_SSE2 1
|
||||
#define HAVE_SSE3 1
|
||||
#define HAVE_SSE4_1 1
|
||||
#define HAVE_SSE4_2 1
|
||||
#define HAVE_SSSE3 1
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INLINE inline
|
||||
#define STATIC_LINK_JXL 0
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,100 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AOM_SCALE_RTCD_H_
|
||||
#define AOM_SCALE_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
struct yv12_buffer_config;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void aom_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_borders aom_extend_frame_borders_c
|
||||
|
||||
void aom_extend_frame_borders_y_c(struct yv12_buffer_config *ybf);
|
||||
#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c
|
||||
|
||||
void aom_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c
|
||||
|
||||
void aom_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c
|
||||
|
||||
void aom_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c
|
||||
|
||||
void aom_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c
|
||||
|
||||
void aom_vertical_band_2_1_scale_i_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c
|
||||
|
||||
void aom_vertical_band_5_3_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c
|
||||
|
||||
void aom_vertical_band_5_4_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
|
||||
#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c
|
||||
|
||||
void aom_yv12_copy_frame_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, const int num_planes);
|
||||
#define aom_yv12_copy_frame aom_yv12_copy_frame_c
|
||||
|
||||
void aom_yv12_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_u aom_yv12_copy_u_c
|
||||
|
||||
void aom_yv12_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
|
||||
#define aom_yv12_copy_v aom_yv12_copy_v_c
|
||||
|
||||
void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
|
||||
#define aom_yv12_copy_y aom_yv12_copy_y_c
|
||||
|
||||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
int aom_yv12_realloc_with_new_border_c(struct yv12_buffer_config *ybf, int new_border, int byte_alignment, int num_planes);
|
||||
#define aom_yv12_realloc_with_new_border aom_yv12_realloc_with_new_border_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/x86.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = x86_simd_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,778 +0,0 @@
|
||||
// This file is generated. Do not edit.
|
||||
#ifndef AV1_RTCD_H_
|
||||
#define AV1_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
/*
|
||||
* AV1
|
||||
*/
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom_dsp/odintrin.h"
|
||||
#include "aom_dsp/txfm_common.h"
|
||||
#include "av1/common/common.h"
|
||||
#include "av1/common/enums.h"
|
||||
#include "av1/common/quant_common.h"
|
||||
#include "av1/common/filter.h"
|
||||
#include "av1/common/convolve.h"
|
||||
#include "av1/common/av1_txfm.h"
|
||||
#include "av1/common/restoration.h"
|
||||
|
||||
struct macroblockd;
|
||||
|
||||
/* Encoder forward decls */
|
||||
struct macroblock;
|
||||
struct txfm_param;
|
||||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
enum { NONE, RELU, SOFTSIGN, SIGMOID } UENUM1BYTE(ACTIVATION);
|
||||
#if CONFIG_NN_V2
|
||||
enum { SOFTMAX_CROSS_ENTROPY } UENUM1BYTE(LOSS);
|
||||
struct NN_CONFIG_V2;
|
||||
typedef struct NN_CONFIG_V2 NN_CONFIG_V2;
|
||||
struct FC_LAYER;
|
||||
typedef struct FC_LAYER FC_LAYER;
|
||||
#endif // CONFIG_NN_V2
|
||||
|
||||
struct CNN_CONFIG;
|
||||
typedef struct CNN_CONFIG CNN_CONFIG;
|
||||
struct CNN_LAYER_CONFIG;
|
||||
typedef struct CNN_LAYER_CONFIG CNN_LAYER_CONFIG;
|
||||
struct CNN_THREAD_DATA;
|
||||
typedef struct CNN_THREAD_DATA CNN_THREAD_DATA;
|
||||
struct CNN_BRANCH_CONFIG;
|
||||
typedef struct CNN_BRANCH_CONFIG CNN_BRANCH_CONFIG;
|
||||
struct CNN_MULTI_OUT;
|
||||
typedef struct CNN_MULTI_OUT CNN_MULTI_OUT;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
#if CONFIG_AV1_HIGHBITDEPTH
|
||||
typedef void (*cfl_subsample_hbd_fn)(const uint16_t *input, int input_stride,
|
||||
uint16_t *output_q3);
|
||||
|
||||
typedef void (*cfl_predict_hbd_fn)(const int16_t *src, uint16_t *dst,
|
||||
int dst_stride, int alpha_q3, int bd);
|
||||
#endif
|
||||
|
||||
typedef void (*cfl_subtract_average_fn)(const uint16_t *src, int16_t *dst);
|
||||
|
||||
typedef void (*cfl_predict_lbd_fn)(const int16_t *src, uint8_t *dst,
|
||||
int dst_stride, int alpha_q3);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void av1_apply_selfguided_restoration_c(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
void av1_apply_selfguided_restoration_sse4_1(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
void av1_apply_selfguided_restoration_avx2(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
RTCD_EXTERN void (*av1_apply_selfguided_restoration)(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
void av1_build_compound_diffwtd_mask_sse4_1(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
void av1_build_compound_diffwtd_mask_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_d16_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
void av1_build_compound_diffwtd_mask_d16_sse4_1(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
void av1_build_compound_diffwtd_mask_d16_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask_d16)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_build_compound_diffwtd_mask_highbd_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
void av1_build_compound_diffwtd_mask_highbd_ssse3(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
void av1_build_compound_diffwtd_mask_highbd_avx2(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
RTCD_EXTERN void (*av1_build_compound_diffwtd_mask_highbd)(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w, int bd);
|
||||
|
||||
int64_t av1_calc_frame_error_c(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
int64_t av1_calc_frame_error_sse2(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
int64_t av1_calc_frame_error_avx2(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
RTCD_EXTERN int64_t (*av1_calc_frame_error)(const uint8_t *const ref, int stride, const uint8_t *const dst, int p_width, int p_height, int p_stride);
|
||||
|
||||
void av1_convolve_2d_scale_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_scale_sse4_1(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_2d_scale)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_2d_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_2d_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_2d_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_horiz_rs_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
void av1_convolve_horiz_rs_sse4_1(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
RTCD_EXTERN void (*av1_convolve_horiz_rs)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn);
|
||||
|
||||
void av1_convolve_x_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_x_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_convolve_x_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_x_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_convolve_y_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
void av1_convolve_y_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
void av1_convolve_y_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
void av1_dr_prediction_z1_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
void av1_dr_prediction_z1_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z2_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z2_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z3_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_sse4_1(uint8_t *p, int sz, int strength);
|
||||
RTCD_EXTERN void (*av1_filter_intra_edge)(uint8_t *p, int sz, int strength);
|
||||
|
||||
void av1_filter_intra_edge_high_c(uint16_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_high_sse4_1(uint16_t *p, int sz, int strength);
|
||||
RTCD_EXTERN void (*av1_filter_intra_edge_high)(uint16_t *p, int sz, int strength);
|
||||
|
||||
void av1_filter_intra_predictor_c(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
void av1_filter_intra_predictor_sse4_1(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
RTCD_EXTERN void (*av1_filter_intra_predictor)(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode);
|
||||
|
||||
void av1_highbd_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
void av1_highbd_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8 av1_highbd_convolve8_sse2
|
||||
|
||||
void av1_highbd_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
void av1_highbd_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_sse2
|
||||
|
||||
void av1_highbd_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
void av1_highbd_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_sse2
|
||||
|
||||
void av1_highbd_convolve_2d_scale_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_scale_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_2d_scale)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_2d_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_2d_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_2d_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_avg av1_highbd_convolve_avg_c
|
||||
|
||||
void av1_highbd_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
|
||||
#define av1_highbd_convolve_copy av1_highbd_convolve_copy_c
|
||||
|
||||
void av1_highbd_convolve_horiz_rs_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
void av1_highbd_convolve_horiz_rs_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_horiz_rs)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd);
|
||||
|
||||
void av1_highbd_convolve_x_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_x_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_convolve_x_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_x_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_convolve_y_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
void av1_highbd_convolve_y_sr_ssse3(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
void av1_highbd_convolve_y_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_y_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z1_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z1)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z2_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z2)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z3)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_avx2(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x64 av1_highbd_inv_txfm_add_16x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x64 av1_highbd_inv_txfm_add_32x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x16)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x16 av1_highbd_inv_txfm_add_64x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x32 av1_highbd_inv_txfm_add_64x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_64x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_64x64 av1_highbd_inv_txfm_add_64x64_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x4_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x4)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x8_sse4_1(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x8)(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
void av1_highbd_iwht4x4_16_add_sse4_1(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_iwht4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
|
||||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_highbd_warp_affine_sse4_1(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_highbd_warp_affine_avx2(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
|
||||
void av1_highbd_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_wiener_convolve_add_src_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_wiener_convolve_add_src_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_wiener_convolve_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x4 av1_inv_txfm2d_add_16x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x64 av1_inv_txfm2d_add_16x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x64 av1_inv_txfm2d_add_32x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_32x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_32x8 av1_inv_txfm2d_add_32x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x16 av1_inv_txfm2d_add_4x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_4x4_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x4)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x16 av1_inv_txfm2d_add_64x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x32 av1_inv_txfm2d_add_64x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x32 av1_inv_txfm2d_add_8x32_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
|
||||
|
||||
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
void av1_inv_txfm2d_add_8x8_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x8)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
|
||||
|
||||
void av1_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_inv_txfm_add_ssse3(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_resize_and_extend_frame_c(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
void av1_resize_and_extend_frame_ssse3(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
RTCD_EXTERN void (*av1_resize_and_extend_frame)(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes);
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
int av1_selfguided_restoration_sse4_1(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
int av1_selfguided_restoration_avx2(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
RTCD_EXTERN int (*av1_selfguided_restoration)(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
int sgr_params_idx, int bit_depth, int highbd);
|
||||
|
||||
void av1_upsample_intra_edge_c(uint8_t *p, int sz);
|
||||
void av1_upsample_intra_edge_sse4_1(uint8_t *p, int sz);
|
||||
RTCD_EXTERN void (*av1_upsample_intra_edge)(uint8_t *p, int sz);
|
||||
|
||||
void av1_upsample_intra_edge_high_c(uint16_t *p, int sz, int bd);
|
||||
void av1_upsample_intra_edge_high_sse4_1(uint16_t *p, int sz, int bd);
|
||||
RTCD_EXTERN void (*av1_upsample_intra_edge_high)(uint16_t *p, int sz, int bd);
|
||||
|
||||
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_warp_affine_sse4_1(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
void av1_warp_affine_avx2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
|
||||
|
||||
void av1_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
void av1_wiener_convolve_add_src_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
void av1_wiener_convolve_add_src_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_copy_rect8_16bit_to_16bit_c(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_16bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_16bit_to_16bit)(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_copy_rect8_8bit_to_16bit_c(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
void cdef_copy_rect8_8bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
RTCD_EXTERN void (*cdef_copy_rect8_8bit_to_16bit)(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
|
||||
|
||||
void cdef_filter_16_0_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_0_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_0)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_1_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_1_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_1)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_2_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_2_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_2)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_16_3_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_sse2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_ssse3(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_sse4_1(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_16_3_avx2(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_16_3)(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_0_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_0_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_0)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_1_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_1_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_1)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_2_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_2_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_2)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
void cdef_filter_8_3_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_sse2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_ssse3(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_sse4_1(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
void cdef_filter_8_3_avx2(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
RTCD_EXTERN void (*cdef_filter_8_3)(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_ssse3(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse4_1(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_avx2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
RTCD_EXTERN int (*cdef_find_dir)(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
||||
void cdef_find_dir_dual_c(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_sse2(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_ssse3(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_sse4_1(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
void cdef_find_dir_dual_avx2(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
RTCD_EXTERN void (*cdef_find_dir_dual)(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_420_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_420_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_422_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_422_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_hbd_fn (*cfl_get_luma_subsampling_444_hbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_ssse3(TX_SIZE tx_size);
|
||||
cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subsample_lbd_fn (*cfl_get_luma_subsampling_444_lbd)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_ssse3(TX_SIZE tx_size);
|
||||
cfl_predict_hbd_fn cfl_get_predict_hbd_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_hbd_fn (*cfl_get_predict_hbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_c(TX_SIZE tx_size);
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_ssse3(TX_SIZE tx_size);
|
||||
cfl_predict_lbd_fn cfl_get_predict_lbd_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_predict_lbd_fn (*cfl_get_predict_lbd_fn)(TX_SIZE tx_size);
|
||||
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_c(TX_SIZE tx_size);
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_sse2(TX_SIZE tx_size);
|
||||
cfl_subtract_average_fn cfl_get_subtract_average_fn_avx2(TX_SIZE tx_size);
|
||||
RTCD_EXTERN cfl_subtract_average_fn (*cfl_get_subtract_average_fn)(TX_SIZE tx_size);
|
||||
|
||||
void av1_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
#include "aom_ports/x86.h"
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
int flags = x86_simd_caps();
|
||||
|
||||
(void)flags;
|
||||
|
||||
av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_apply_selfguided_restoration = av1_apply_selfguided_restoration_avx2;
|
||||
av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_c;
|
||||
if (flags & HAS_SSE4_1) av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask = av1_build_compound_diffwtd_mask_avx2;
|
||||
av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_c;
|
||||
if (flags & HAS_SSE4_1) av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask_d16 = av1_build_compound_diffwtd_mask_d16_avx2;
|
||||
av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_c;
|
||||
if (flags & HAS_SSSE3) av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_ssse3;
|
||||
if (flags & HAS_AVX2) av1_build_compound_diffwtd_mask_highbd = av1_build_compound_diffwtd_mask_highbd_avx2;
|
||||
av1_calc_frame_error = av1_calc_frame_error_sse2;
|
||||
if (flags & HAS_AVX2) av1_calc_frame_error = av1_calc_frame_error_avx2;
|
||||
av1_convolve_2d_scale = av1_convolve_2d_scale_c;
|
||||
if (flags & HAS_SSE4_1) av1_convolve_2d_scale = av1_convolve_2d_scale_sse4_1;
|
||||
av1_convolve_2d_sr = av1_convolve_2d_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_2d_sr = av1_convolve_2d_sr_avx2;
|
||||
av1_convolve_horiz_rs = av1_convolve_horiz_rs_c;
|
||||
if (flags & HAS_SSE4_1) av1_convolve_horiz_rs = av1_convolve_horiz_rs_sse4_1;
|
||||
av1_convolve_x_sr = av1_convolve_x_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_x_sr = av1_convolve_x_sr_avx2;
|
||||
av1_convolve_y_sr = av1_convolve_y_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_y_sr = av1_convolve_y_sr_avx2;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_sse2;
|
||||
if (flags & HAS_SSSE3) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_avx2;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_avx2;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_avx2;
|
||||
av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z1 = av1_dr_prediction_z1_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
|
||||
av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z2 = av1_dr_prediction_z2_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
|
||||
av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
|
||||
if (flags & HAS_SSE4_1) av1_dr_prediction_z3 = av1_dr_prediction_z3_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
|
||||
av1_filter_intra_edge = av1_filter_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
|
||||
av1_filter_intra_edge_high = av1_filter_intra_edge_high_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge_high = av1_filter_intra_edge_high_sse4_1;
|
||||
av1_filter_intra_predictor = av1_filter_intra_predictor_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_predictor = av1_filter_intra_predictor_sse4_1;
|
||||
av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_sse4_1;
|
||||
av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_2d_sr = av1_highbd_convolve_2d_sr_avx2;
|
||||
av1_highbd_convolve_horiz_rs = av1_highbd_convolve_horiz_rs_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_convolve_horiz_rs = av1_highbd_convolve_horiz_rs_sse4_1;
|
||||
av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_x_sr = av1_highbd_convolve_x_sr_avx2;
|
||||
av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_avx2;
|
||||
av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_avx2;
|
||||
av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
|
||||
av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z2 = av1_highbd_dr_prediction_z2_avx2;
|
||||
av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
|
||||
av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
|
||||
av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
|
||||
av1_highbd_iwht4x4_16_add = av1_highbd_iwht4x4_16_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_iwht4x4_16_add = av1_highbd_iwht4x4_16_add_sse4_1;
|
||||
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_warp_affine = av1_highbd_warp_affine_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_warp_affine = av1_highbd_warp_affine_avx2;
|
||||
av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_avx2;
|
||||
av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_sse4_1;
|
||||
av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_sse4_1;
|
||||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_SSSE3) av1_inv_txfm_add = av1_inv_txfm_add_ssse3;
|
||||
if (flags & HAS_AVX2) av1_inv_txfm_add = av1_inv_txfm_add_avx2;
|
||||
av1_resize_and_extend_frame = av1_resize_and_extend_frame_c;
|
||||
if (flags & HAS_SSSE3) av1_resize_and_extend_frame = av1_resize_and_extend_frame_ssse3;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_selfguided_restoration = av1_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_selfguided_restoration = av1_selfguided_restoration_avx2;
|
||||
av1_upsample_intra_edge = av1_upsample_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_upsample_intra_edge = av1_upsample_intra_edge_sse4_1;
|
||||
av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_c;
|
||||
if (flags & HAS_SSE4_1) av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_sse4_1;
|
||||
av1_warp_affine = av1_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_warp_affine = av1_warp_affine_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_warp_affine = av1_warp_affine_avx2;
|
||||
av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_sse2;
|
||||
if (flags & HAS_AVX2) av1_wiener_convolve_add_src = av1_wiener_convolve_add_src_avx2;
|
||||
cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_copy_rect8_16bit_to_16bit = cdef_copy_rect8_16bit_to_16bit_avx2;
|
||||
cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_copy_rect8_8bit_to_16bit = cdef_copy_rect8_8bit_to_16bit_avx2;
|
||||
cdef_filter_16_0 = cdef_filter_16_0_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_0 = cdef_filter_16_0_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_0 = cdef_filter_16_0_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_0 = cdef_filter_16_0_avx2;
|
||||
cdef_filter_16_1 = cdef_filter_16_1_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_1 = cdef_filter_16_1_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_1 = cdef_filter_16_1_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_1 = cdef_filter_16_1_avx2;
|
||||
cdef_filter_16_2 = cdef_filter_16_2_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_2 = cdef_filter_16_2_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_2 = cdef_filter_16_2_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_2 = cdef_filter_16_2_avx2;
|
||||
cdef_filter_16_3 = cdef_filter_16_3_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_16_3 = cdef_filter_16_3_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_16_3 = cdef_filter_16_3_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_16_3 = cdef_filter_16_3_avx2;
|
||||
cdef_filter_8_0 = cdef_filter_8_0_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_0 = cdef_filter_8_0_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_0 = cdef_filter_8_0_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_0 = cdef_filter_8_0_avx2;
|
||||
cdef_filter_8_1 = cdef_filter_8_1_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_1 = cdef_filter_8_1_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_1 = cdef_filter_8_1_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_1 = cdef_filter_8_1_avx2;
|
||||
cdef_filter_8_2 = cdef_filter_8_2_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_2 = cdef_filter_8_2_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_2 = cdef_filter_8_2_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_2 = cdef_filter_8_2_avx2;
|
||||
cdef_filter_8_3 = cdef_filter_8_3_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_filter_8_3 = cdef_filter_8_3_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_filter_8_3 = cdef_filter_8_3_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_filter_8_3 = cdef_filter_8_3_avx2;
|
||||
cdef_find_dir = cdef_find_dir_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_find_dir = cdef_find_dir_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_find_dir = cdef_find_dir_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_find_dir = cdef_find_dir_avx2;
|
||||
cdef_find_dir_dual = cdef_find_dir_dual_sse2;
|
||||
if (flags & HAS_SSSE3) cdef_find_dir_dual = cdef_find_dir_dual_ssse3;
|
||||
if (flags & HAS_SSE4_1) cdef_find_dir_dual = cdef_find_dir_dual_sse4_1;
|
||||
if (flags & HAS_AVX2) cdef_find_dir_dual = cdef_find_dir_dual_avx2;
|
||||
cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_420_hbd = cfl_get_luma_subsampling_420_hbd_avx2;
|
||||
cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_420_lbd = cfl_get_luma_subsampling_420_lbd_avx2;
|
||||
cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_422_hbd = cfl_get_luma_subsampling_422_hbd_avx2;
|
||||
cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_422_lbd = cfl_get_luma_subsampling_422_lbd_avx2;
|
||||
cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_444_hbd = cfl_get_luma_subsampling_444_hbd_avx2;
|
||||
cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_luma_subsampling_444_lbd = cfl_get_luma_subsampling_444_lbd_avx2;
|
||||
cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_predict_hbd_fn = cfl_get_predict_hbd_fn_avx2;
|
||||
cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_c;
|
||||
if (flags & HAS_SSSE3) cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_ssse3;
|
||||
if (flags & HAS_AVX2) cfl_get_predict_lbd_fn = cfl_get_predict_lbd_fn_avx2;
|
||||
cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_sse2;
|
||||
if (flags & HAS_AVX2) cfl_get_subtract_average_fn = cfl_get_subtract_average_fn_avx2;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,163 +0,0 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
import cmakeparser as cp
|
||||
|
||||
import copy
|
||||
import datetime
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
|
||||
AOM_DIR = './src'
|
||||
|
||||
def write_aom_config(system, arch, variables, cache_variables):
|
||||
# read template cmake file
|
||||
variables['year'] = datetime.datetime.now().year
|
||||
cp.parse(variables, [], os.path.join(AOM_DIR, 'build', 'cmake',
|
||||
'generate_aom_config_templates.cmake'))
|
||||
|
||||
# filter variables
|
||||
cache_variables = [x for x in sorted(cache_variables)
|
||||
if x and not x.startswith((' ', 'CMAKE', 'AOM'))]
|
||||
|
||||
# inherit this from the mozilla build config
|
||||
cache_variables.remove('HAVE_PTHREAD_H')
|
||||
|
||||
outdir = os.path.join('config', system, arch, 'config')
|
||||
try:
|
||||
os.makedirs(outdir)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
with open(os.path.join(outdir, 'aom_config.h'), 'w') as f:
|
||||
header = variables['h_file_header_block']
|
||||
f.write(header)
|
||||
f.write('\n')
|
||||
for var in cache_variables:
|
||||
f.write('#define %s %s\n' % (var, variables[var]))
|
||||
f.write('#endif /* AOM_CONFIG_H_ */\n')
|
||||
|
||||
with open(os.path.join(outdir, 'aom_config.asm'), 'w') as f:
|
||||
header = variables['asm_file_header_block']
|
||||
f.write(header)
|
||||
f.write('\n')
|
||||
for var in cache_variables:
|
||||
if var in ['INCLUDE_INSTALL_DIR', 'INLINE',
|
||||
'LIB_INSTALL_DIR', 'RESTRICT']:
|
||||
continue
|
||||
if arch == 'arm':
|
||||
f.write('.equ %s, %s\n' % (var, variables[var]))
|
||||
else:
|
||||
f.write('%s equ %s\n' % (var, variables[var]))
|
||||
|
||||
if arch == 'arm':
|
||||
f.write('.section .note.GNU-stack,"",%progbits')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
|
||||
shared_variables = {
|
||||
'CMAKE_CURRENT_SOURCE_DIR': AOM_DIR,
|
||||
'CONFIG_AV1_DECODER': 1,
|
||||
'CONFIG_AV1_ENCODER': 0,
|
||||
'CONFIG_COLLECT_INTER_MODE_RD_STATS': 0,
|
||||
'CONFIG_INSPECTION': 0,
|
||||
'CONFIG_INTERNAL_STATS': 0,
|
||||
'CONFIG_LIBYUV': 0,
|
||||
'CONFIG_LOWBITDEPTH': 1,
|
||||
'CONFIG_MULTITHREAD': 1,
|
||||
'CONFIG_PIC': 0,
|
||||
'CONFIG_WEBM_IO': 0,
|
||||
'CMAKE_CURRENT_BINARY_DIR': 'OBJDIR',
|
||||
'CMAKE_INSTALL_PREFIX': 'INSTALLDIR',
|
||||
'CMAKE_SYSTEM_NAME': 'Linux',
|
||||
'CMAKE_SYSTEM_PROCESSOR': 'x86_64',
|
||||
'ENABLE_EXAMPLES': 0,
|
||||
'ENABLE_TESTS': 0,
|
||||
'ENABLE_TOOLS': 0,
|
||||
'ENABLE_DOCS': 0,
|
||||
'AOM_TEST_TEST_CMAKE_': 1, #prevent building tests
|
||||
}
|
||||
|
||||
f = open('sources.mozbuild', 'wb')
|
||||
f.write('# This file is generated. Do not edit.\n\n')
|
||||
f.write('files = {\n')
|
||||
|
||||
platforms = [
|
||||
('armv7', 'linux', 'arm', True),
|
||||
('generic', '', 'generic', True),
|
||||
('x86', 'linux', 'ia32', True),
|
||||
('x86', 'win', 'mingw32', False),
|
||||
('x86', 'win', 'ia32', False),
|
||||
('x86_64', 'linux', 'x64', True),
|
||||
('x86_64', 'mac', 'x64', False),
|
||||
('x86_64', 'win', 'x64', False),
|
||||
('x86_64', 'win', 'mingw64', False),
|
||||
]
|
||||
for cpu, system, arch, generate_sources in platforms:
|
||||
print('Running CMake for %s (%s)' % (cpu, system))
|
||||
variables = shared_variables.copy()
|
||||
variables['AOM_TARGET_CPU'] = cpu
|
||||
|
||||
# We skip compiling test programs that detect these
|
||||
variables['HAVE_FEXCEPT'] = 1
|
||||
variables['INLINE'] = 'inline'
|
||||
if cpu == 'x86' and system == 'linux':
|
||||
variables['CONFIG_PIC'] = 1
|
||||
if cpu == 'armv7':
|
||||
variables['CONFIG_PIC'] = 1
|
||||
if system == 'win' and not arch.startswith('mingw'):
|
||||
variables['MSVC'] = 1
|
||||
|
||||
cache_variables = []
|
||||
sources = cp.parse(variables, cache_variables,
|
||||
os.path.join(AOM_DIR, 'CMakeLists.txt'))
|
||||
|
||||
# Disable HAVE_UNISTD_H.
|
||||
cache_variables.remove('HAVE_UNISTD_H')
|
||||
write_aom_config(system, arch, variables, cache_variables)
|
||||
# Currently, the sources are the same for each supported cpu
|
||||
# regardless of operating system / compiler. If that changes, we'll
|
||||
# have to generate sources for each combination.
|
||||
if generate_sources:
|
||||
# Remove spurious sources and perl files
|
||||
sources = filter(lambda x: x.startswith(AOM_DIR), sources)
|
||||
sources = filter(lambda x: not x.endswith('.pl'), sources)
|
||||
|
||||
# Filter out exports
|
||||
exports = filter(lambda x: re.match(os.path.join(AOM_DIR, '(aom|aom_mem|aom_ports|aom_scale)/.*h$'), x), sources)
|
||||
exports = filter(lambda x: not re.search('(internal|src)', x), exports)
|
||||
exports = filter(lambda x: not re.search('(emmintrin_compat.h|mem_.*|msvc.h|aom_once.h)$', x), exports)
|
||||
|
||||
for export in exports:
|
||||
sources.remove(export)
|
||||
|
||||
# Remove header files
|
||||
sources = sorted(filter(lambda x: not x.endswith('.h'), sources))
|
||||
|
||||
# The build system is unhappy if two files have the same prefix
|
||||
# In libaom, sometimes .asm and .c files share the same prefix
|
||||
for i in xrange(len(sources) - 1):
|
||||
if sources[i].endswith('.asm'):
|
||||
if os.path.splitext(sources[i])[0] == os.path.splitext(sources[i + 1])[0]:
|
||||
old = sources[i]
|
||||
sources[i] = sources[i].replace('.asm', '_asm.asm')
|
||||
if not os.path.exists(sources[i]):
|
||||
os.rename(old, sources[i])
|
||||
|
||||
f.write(' \'%s_EXPORTS\': [\n' % arch.upper())
|
||||
for export in sorted(exports):
|
||||
f.write(' \'%s\',\n' % export)
|
||||
f.write(" ],\n")
|
||||
|
||||
f.write(' \'%s_SOURCES\': [\n' % arch.upper())
|
||||
for source in sorted(sources):
|
||||
f.write(' \'%s\',\n' % source)
|
||||
f.write(' ],\n')
|
||||
|
||||
print('\n')
|
||||
|
||||
f.write('}\n')
|
||||
f.close()
|
||||
@@ -1,80 +0,0 @@
|
||||
#!/bin/bash -e
|
||||
#
|
||||
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
# Modified from chromium/src/third_party/libaom/generate_gni.sh
|
||||
|
||||
# This script is used to generate sources.mozbuild and files in the
|
||||
# config/platform directories needed to build libaom.
|
||||
# Every time libaom source code is updated just run this script.
|
||||
#
|
||||
# Usage:
|
||||
# $ ./generate_sources_mozbuild.sh
|
||||
|
||||
export LC_ALL=C
|
||||
BASE_DIR=$(pwd)
|
||||
LIBAOM_SRC_DIR="src"
|
||||
LIBAOM_CONFIG_DIR="config"
|
||||
|
||||
# Print license header.
|
||||
# $1 - Output base name
|
||||
function write_license {
|
||||
echo "# This file is generated. Do not edit." >> $1
|
||||
echo "" >> $1
|
||||
}
|
||||
|
||||
# Generate *_rtcd.h files.
|
||||
# $1 - Header file directory.
|
||||
# $2 - Architecture.
|
||||
# $3 - Optional - any additional arguments to pass through.
|
||||
function gen_rtcd_header {
|
||||
echo "Generate $LIBAOM_CONFIG_DIR/$1/*_rtcd.h files."
|
||||
|
||||
AOM_CONFIG=$BASE_DIR/$LIBAOM_CONFIG_DIR/$1/config/aom_config.h
|
||||
|
||||
$BASE_DIR/$LIBAOM_SRC_DIR/build/cmake/rtcd.pl \
|
||||
--arch=$2 \
|
||||
--sym=av1_rtcd $3 \
|
||||
--config=$AOM_CONFIG \
|
||||
$BASE_DIR/$LIBAOM_SRC_DIR/av1/common/av1_rtcd_defs.pl \
|
||||
> $BASE_DIR/$LIBAOM_CONFIG_DIR/$1/config/av1_rtcd.h
|
||||
|
||||
$BASE_DIR/$LIBAOM_SRC_DIR/build/cmake/rtcd.pl \
|
||||
--arch=$2 \
|
||||
--sym=aom_scale_rtcd $3 \
|
||||
--config=$AOM_CONFIG \
|
||||
$BASE_DIR/$LIBAOM_SRC_DIR/aom_scale/aom_scale_rtcd.pl \
|
||||
> $BASE_DIR/$LIBAOM_CONFIG_DIR/$1/config/aom_scale_rtcd.h
|
||||
|
||||
$BASE_DIR/$LIBAOM_SRC_DIR/build/cmake/rtcd.pl \
|
||||
--arch=$2 \
|
||||
--sym=aom_dsp_rtcd $3 \
|
||||
--config=$AOM_CONFIG \
|
||||
$BASE_DIR/$LIBAOM_SRC_DIR/aom_dsp/aom_dsp_rtcd_defs.pl \
|
||||
> $BASE_DIR/$LIBAOM_CONFIG_DIR/$1/config/aom_dsp_rtcd.h
|
||||
}
|
||||
|
||||
echo "Generating config files."
|
||||
cd $BASE_DIR
|
||||
python generate_sources_mozbuild.py
|
||||
|
||||
# Copy aom_version.h once. The file is the same for all platforms.
|
||||
cp aom_version.h $BASE_DIR/$LIBAOM_CONFIG_DIR
|
||||
|
||||
gen_rtcd_header linux/x64 x86_64
|
||||
gen_rtcd_header linux/ia32 x86
|
||||
gen_rtcd_header mac/x64 x86_64
|
||||
gen_rtcd_header win/x64 x86_64
|
||||
gen_rtcd_header win/ia32 x86
|
||||
gen_rtcd_header win/mingw32 x86
|
||||
gen_rtcd_header win/mingw64 x86_64
|
||||
|
||||
gen_rtcd_header linux/arm armv7
|
||||
|
||||
gen_rtcd_header generic generic
|
||||
|
||||
cd $BASE_DIR/$LIBAOM_SRC_DIR
|
||||
|
||||
cd $BASE_DIR
|
||||
@@ -1,156 +0,0 @@
|
||||
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
with Files('*'):
|
||||
BUG_COMPONENT = ('Core', 'Audio/Video')
|
||||
|
||||
include('sources.mozbuild')
|
||||
|
||||
# Linux, Mac and Win share file lists for x86* but not configurations.
|
||||
if CONFIG['CPU_ARCH'] == 'x86_64':
|
||||
EXPORTS.aom += files['X64_EXPORTS']
|
||||
SOURCES += files['X64_SOURCES']
|
||||
USE_YASM = True
|
||||
if CONFIG['OS_TARGET'] == 'WINNT':
|
||||
if CONFIG['GNU_CC']:
|
||||
ASFLAGS += [ '-I%s/media/libaom/config/win/mingw64/' % TOPSRCDIR ]
|
||||
LOCAL_INCLUDES += [ '/media/libaom/config/win/mingw64/' ]
|
||||
EXPORTS.aom += [ 'config/win/mingw64/config/aom_config.h' ]
|
||||
else:
|
||||
ASFLAGS += [ '-I%s/media/libaom/config/win/x64/' % TOPSRCDIR ]
|
||||
LOCAL_INCLUDES += [ '/media/libaom/config/win/x64/' ]
|
||||
EXPORTS.aom += [ 'config/win/x64/config/aom_config.h' ]
|
||||
NO_PGO = True
|
||||
elif CONFIG['OS_TARGET'] == 'Darwin':
|
||||
ASFLAGS += [ '-I%s/media/libaom/config/mac/x64/' % TOPSRCDIR ]
|
||||
LOCAL_INCLUDES += [ '/media/libaom/config/mac/x64/' ]
|
||||
EXPORTS.aom += [ 'config/mac/x64/config/aom_config.h' ]
|
||||
else: # Android, Linux, BSDs, etc.
|
||||
ASFLAGS += [ '-I%s/media/libaom/config/linux/x64/' % TOPSRCDIR ]
|
||||
LOCAL_INCLUDES += [ '/media/libaom/config/linux/x64/' ]
|
||||
EXPORTS.aom += [ 'config/linux/x64/config/aom_config.h' ]
|
||||
elif CONFIG['CPU_ARCH'] == 'x86':
|
||||
EXPORTS.aom += files['IA32_EXPORTS']
|
||||
SOURCES += files['IA32_SOURCES']
|
||||
USE_YASM = True
|
||||
if CONFIG['OS_TARGET'] == 'WINNT':
|
||||
if CONFIG['GNU_CC']:
|
||||
ASFLAGS += [ '-I%s/media/libaom/config/win/mingw32/' % TOPSRCDIR ]
|
||||
LOCAL_INCLUDES += [ '/media/libaom/config/win/mingw32/' ]
|
||||
EXPORTS.aom += [ 'config/win/mingw32/config/aom_config.h' ]
|
||||
else:
|
||||
ASFLAGS += [ '-I%s/media/libaom/config/win/ia32/' % TOPSRCDIR ]
|
||||
LOCAL_INCLUDES += [ '/media/libaom/config/win/ia32/' ]
|
||||
EXPORTS.aom += [ 'config/win/ia32/config/aom_config.h' ]
|
||||
NO_PGO = True
|
||||
else: # Android, Linux, BSDs, etc.
|
||||
ASFLAGS += [ '-I%s/media/libaom/config/linux/ia32/' % TOPSRCDIR ]
|
||||
LOCAL_INCLUDES += [ '/media/libaom/config/linux/ia32/' ]
|
||||
EXPORTS.aom += [ 'config/linux/ia32/config/aom_config.h' ]
|
||||
elif CONFIG['CPU_ARCH'] == 'arm':
|
||||
EXPORTS.aom += files['ARM_EXPORTS']
|
||||
ASFLAGS += [
|
||||
'-I%s/media/libaom/config/linux/arm/' % TOPSRCDIR,
|
||||
'-I%s/libaom' % OBJDIR,
|
||||
]
|
||||
LOCAL_INCLUDES += [ '/media/libaom/config/linux/arm/' ]
|
||||
EXPORTS.aom += [ 'config/linux/arm/config/aom_config.h' ]
|
||||
|
||||
arm_asm_files = files['ARM_SOURCES']
|
||||
|
||||
if CONFIG['VPX_AS_CONVERSION']:
|
||||
SOURCES += sorted([
|
||||
"!%s.S" % f if f.endswith('.asm') else f for f in arm_asm_files
|
||||
])
|
||||
else:
|
||||
SOURCES += sorted(arm_asm_files)
|
||||
|
||||
for f in SOURCES:
|
||||
if f.endswith('neon.c'):
|
||||
SOURCES[f].flags += CONFIG['VPX_ASFLAGS']
|
||||
|
||||
if CONFIG['OS_TARGET'] == 'Android':
|
||||
# For cpu-features.h
|
||||
LOCAL_INCLUDES += [
|
||||
'%%%s/sources/android/cpufeatures' % CONFIG['ANDROID_NDK'],
|
||||
]
|
||||
if CONFIG['CLANG_CXX']:
|
||||
ASFLAGS += [
|
||||
'-no-integrated-as',
|
||||
]
|
||||
else:
|
||||
# Generic C-only configuration
|
||||
EXPORTS.aom += files['GENERIC_EXPORTS']
|
||||
SOURCES += files['GENERIC_SOURCES']
|
||||
ASFLAGS += [ '-I%s/media/libaom/config/generic/' % TOPSRCDIR ]
|
||||
LOCAL_INCLUDES += [ '/media/libaom/config/generic/' ]
|
||||
EXPORTS.aom += [ 'config/generic/config/aom_config.h' ]
|
||||
|
||||
if CONFIG['GKMEDIAS_SHARED_LIBRARY']:
|
||||
NO_VISIBILITY_FLAGS = True
|
||||
|
||||
# We allow warnings for third-party code that can be updated from upstream.
|
||||
ALLOW_COMPILER_WARNINGS = True
|
||||
|
||||
FINAL_LIBRARY = 'gkmedias'
|
||||
|
||||
if CONFIG['OS_TARGET'] == 'Android':
|
||||
# Older versions of the Android NDK don't pre-define anything to indicate
|
||||
# the OS they're on, so do it for them.
|
||||
DEFINES['__linux__'] = True
|
||||
|
||||
if not CONFIG['MOZ_WEBRTC']:
|
||||
SOURCES += [
|
||||
'%%%s/sources/android/cpufeatures/cpu-features.c' % CONFIG['ANDROID_NDK'],
|
||||
]
|
||||
|
||||
if CONFIG['CLANG_CL'] or not CONFIG['_MSC_VER']:
|
||||
for f in SOURCES:
|
||||
if f.endswith('sse2.c'):
|
||||
SOURCES[f].flags += CONFIG['SSE2_FLAGS']
|
||||
elif f.endswith('ssse3.c'):
|
||||
SOURCES[f].flags += ['-mssse3']
|
||||
elif f.endswith('sse4.c'):
|
||||
SOURCES[f].flags += ['-msse4.1']
|
||||
elif f.endswith('sse42.c'):
|
||||
SOURCES[f].flags += ['-msse4.2']
|
||||
elif f.endswith('avx.c'):
|
||||
SOURCES[f].flags += ['-mavx']
|
||||
elif f.endswith('avx2.c'):
|
||||
SOURCES[f].flags += ['-mavx2']
|
||||
if CONFIG['_MSC_VER']:
|
||||
for f in SOURCES:
|
||||
# MSVC massively chokes on inlining these SIMD sources, so disable inlining for them.
|
||||
if f.endswith('cdef_block_sse2.c'):
|
||||
SOURCES[f].flags += ['-Ob0']
|
||||
elif f.endswith('cdef_block_ssse3.c'):
|
||||
SOURCES[f].flags += ['-Ob0']
|
||||
elif f.endswith('cdef_block_sse4.c'):
|
||||
SOURCES[f].flags += ['-Ob0']
|
||||
elif f.endswith('cdef_block_avx2.c'):
|
||||
SOURCES[f].flags += ['-Ob0']
|
||||
|
||||
# Suppress warnings in third-party code.
|
||||
if CONFIG['GNU_CC'] or CONFIG['CLANG_CL']:
|
||||
CFLAGS += [
|
||||
'-Wno-sign-compare',
|
||||
'-Wno-unused-function', # so many of these warnings; just ignore them
|
||||
]
|
||||
if CONFIG['CLANG_CXX'] or CONFIG['CLANG_CL']:
|
||||
CFLAGS += [
|
||||
'-Wno-unreachable-code',
|
||||
'-Wno-unneeded-internal-declaration',
|
||||
]
|
||||
|
||||
ASFLAGS += CONFIG['VPX_ASFLAGS']
|
||||
ASFLAGS += [
|
||||
'-I.',
|
||||
'-I%s/media/libaom/src' % TOPSRCDIR,
|
||||
]
|
||||
|
||||
LOCAL_INCLUDES += [
|
||||
'/media/libaom/config', # aom_version.h
|
||||
'/media/libaom/src',
|
||||
]
|
||||
@@ -1,628 +0,0 @@
|
||||
files = {
|
||||
'ARM_EXPORTS': [
|
||||
'/media/libaom/src/aom/aom.h',
|
||||
'/media/libaom/src/aom/aom_codec.h',
|
||||
'/media/libaom/src/aom/aom_decoder.h',
|
||||
'/media/libaom/src/aom/aom_frame_buffer.h',
|
||||
'/media/libaom/src/aom/aom_image.h',
|
||||
'/media/libaom/src/aom/aom_integer.h',
|
||||
'/media/libaom/src/aom/aomdx.h',
|
||||
'/media/libaom/src/aom_dsp/aom_dsp_common.h',
|
||||
'/media/libaom/src/aom_dsp/arm/mem_neon.h',
|
||||
'/media/libaom/src/aom_dsp/arm/transpose_neon.h',
|
||||
'/media/libaom/src/aom_dsp/binary_codes_reader.h',
|
||||
'/media/libaom/src/aom_dsp/bitreader.h',
|
||||
'/media/libaom/src/aom_dsp/bitreader_buffer.h',
|
||||
'/media/libaom/src/aom_dsp/blend.h',
|
||||
'/media/libaom/src/aom_dsp/entcode.h',
|
||||
'/media/libaom/src/aom_dsp/entdec.h',
|
||||
'/media/libaom/src/aom_dsp/fft_common.h',
|
||||
'/media/libaom/src/aom_dsp/intrapred_common.h',
|
||||
'/media/libaom/src/aom_dsp/odintrin.h',
|
||||
'/media/libaom/src/aom_dsp/prob.h',
|
||||
'/media/libaom/src/aom_dsp/recenter.h',
|
||||
'/media/libaom/src/aom_dsp/txfm_common.h',
|
||||
'/media/libaom/src/aom_mem/aom_mem.h',
|
||||
'/media/libaom/src/aom_ports/aom_timer.h',
|
||||
'/media/libaom/src/aom_ports/arm.h',
|
||||
'/media/libaom/src/aom_ports/bitops.h',
|
||||
'/media/libaom/src/aom_ports/mem.h',
|
||||
'/media/libaom/src/aom_ports/sanitizer.h',
|
||||
'/media/libaom/src/aom_scale/aom_scale.h',
|
||||
'/media/libaom/src/aom_scale/yv12config.h',
|
||||
'/media/libaom/src/av1/common/cdef_block_simd.h',
|
||||
'/media/libaom/src/av1/decoder/grain_synthesis.h',
|
||||
],
|
||||
'ARM_SOURCES': [
|
||||
'/media/libaom/src/aom/src/aom_codec.c',
|
||||
'/media/libaom/src/aom/src/aom_decoder.c',
|
||||
'/media/libaom/src/aom/src/aom_image.c',
|
||||
'/media/libaom/src/aom/src/aom_integer.c',
|
||||
'/media/libaom/src/aom_dsp/aom_convolve.c',
|
||||
'/media/libaom/src/aom_dsp/aom_dsp_rtcd.c',
|
||||
'/media/libaom/src/aom_dsp/arm/aom_convolve_copy_neon.c',
|
||||
'/media/libaom/src/aom_dsp/arm/blend_a64_mask_neon.c',
|
||||
'/media/libaom/src/aom_dsp/arm/fwd_txfm_neon.c',
|
||||
'/media/libaom/src/aom_dsp/arm/highbd_intrapred_neon.c',
|
||||
'/media/libaom/src/aom_dsp/arm/highbd_loopfilter_neon.c',
|
||||
'/media/libaom/src/aom_dsp/arm/intrapred_neon.c',
|
||||
'/media/libaom/src/aom_dsp/arm/loopfilter_neon.c',
|
||||
'/media/libaom/src/aom_dsp/arm/subtract_neon.c',
|
||||
'/media/libaom/src/aom_dsp/binary_codes_reader.c',
|
||||
'/media/libaom/src/aom_dsp/bitreader.c',
|
||||
'/media/libaom/src/aom_dsp/bitreader_buffer.c',
|
||||
'/media/libaom/src/aom_dsp/blend_a64_hmask.c',
|
||||
'/media/libaom/src/aom_dsp/blend_a64_mask.c',
|
||||
'/media/libaom/src/aom_dsp/blend_a64_vmask.c',
|
||||
'/media/libaom/src/aom_dsp/entcode.c',
|
||||
'/media/libaom/src/aom_dsp/entdec.c',
|
||||
'/media/libaom/src/aom_dsp/fft.c',
|
||||
'/media/libaom/src/aom_dsp/intrapred.c',
|
||||
'/media/libaom/src/aom_dsp/loopfilter.c',
|
||||
'/media/libaom/src/aom_dsp/odintrin.c',
|
||||
'/media/libaom/src/aom_dsp/subtract.c',
|
||||
'/media/libaom/src/aom_mem/aom_mem.c',
|
||||
'/media/libaom/src/aom_ports/arm_cpudetect.c',
|
||||
'/media/libaom/src/aom_scale/aom_scale_rtcd.c',
|
||||
'/media/libaom/src/aom_scale/generic/aom_scale.c',
|
||||
'/media/libaom/src/aom_scale/generic/gen_scalers.c',
|
||||
'/media/libaom/src/aom_scale/generic/yv12config.c',
|
||||
'/media/libaom/src/aom_scale/generic/yv12extend.c',
|
||||
'/media/libaom/src/aom_util/aom_thread.c',
|
||||
'/media/libaom/src/aom_util/debug_util.c',
|
||||
'/media/libaom/src/av1/av1_dx_iface.c',
|
||||
'/media/libaom/src/av1/common/alloccommon.c',
|
||||
'/media/libaom/src/av1/common/arm/av1_inv_txfm_neon.c',
|
||||
'/media/libaom/src/av1/common/arm/av1_txfm_neon.c',
|
||||
'/media/libaom/src/av1/common/arm/blend_a64_hmask_neon.c',
|
||||
'/media/libaom/src/av1/common/arm/blend_a64_vmask_neon.c',
|
||||
'/media/libaom/src/av1/common/arm/cdef_block_neon.c',
|
||||
'/media/libaom/src/av1/common/arm/cfl_neon.c',
|
||||
'/media/libaom/src/av1/common/arm/convolve_neon.c',
|
||||
'/media/libaom/src/av1/common/arm/highbd_inv_txfm_neon.c',
|
||||
'/media/libaom/src/av1/common/arm/jnt_convolve_neon.c',
|
||||
'/media/libaom/src/av1/common/arm/reconinter_neon.c',
|
||||
'/media/libaom/src/av1/common/arm/reconintra_neon.c',
|
||||
'/media/libaom/src/av1/common/arm/resize_neon.c',
|
||||
'/media/libaom/src/av1/common/arm/selfguided_neon.c',
|
||||
'/media/libaom/src/av1/common/arm/warp_plane_neon.c',
|
||||
'/media/libaom/src/av1/common/arm/wiener_convolve_neon.c',
|
||||
'/media/libaom/src/av1/common/av1_inv_txfm1d.c',
|
||||
'/media/libaom/src/av1/common/av1_inv_txfm2d.c',
|
||||
'/media/libaom/src/av1/common/av1_loopfilter.c',
|
||||
'/media/libaom/src/av1/common/av1_rtcd.c',
|
||||
'/media/libaom/src/av1/common/av1_txfm.c',
|
||||
'/media/libaom/src/av1/common/blockd.c',
|
||||
'/media/libaom/src/av1/common/cdef.c',
|
||||
'/media/libaom/src/av1/common/cdef_block.c',
|
||||
'/media/libaom/src/av1/common/cfl.c',
|
||||
'/media/libaom/src/av1/common/convolve.c',
|
||||
'/media/libaom/src/av1/common/debugmodes.c',
|
||||
'/media/libaom/src/av1/common/entropy.c',
|
||||
'/media/libaom/src/av1/common/entropymode.c',
|
||||
'/media/libaom/src/av1/common/entropymv.c',
|
||||
'/media/libaom/src/av1/common/frame_buffers.c',
|
||||
'/media/libaom/src/av1/common/idct.c',
|
||||
'/media/libaom/src/av1/common/mvref_common.c',
|
||||
'/media/libaom/src/av1/common/obu_util.c',
|
||||
'/media/libaom/src/av1/common/pred_common.c',
|
||||
'/media/libaom/src/av1/common/quant_common.c',
|
||||
'/media/libaom/src/av1/common/reconinter.c',
|
||||
'/media/libaom/src/av1/common/reconintra.c',
|
||||
'/media/libaom/src/av1/common/resize.c',
|
||||
'/media/libaom/src/av1/common/restoration.c',
|
||||
'/media/libaom/src/av1/common/scale.c',
|
||||
'/media/libaom/src/av1/common/scan.c',
|
||||
'/media/libaom/src/av1/common/seg_common.c',
|
||||
'/media/libaom/src/av1/common/thread_common.c',
|
||||
'/media/libaom/src/av1/common/tile_common.c',
|
||||
'/media/libaom/src/av1/common/timing.c',
|
||||
'/media/libaom/src/av1/common/txb_common.c',
|
||||
'/media/libaom/src/av1/common/warped_motion.c',
|
||||
'/media/libaom/src/av1/decoder/decodeframe.c',
|
||||
'/media/libaom/src/av1/decoder/decodemv.c',
|
||||
'/media/libaom/src/av1/decoder/decoder.c',
|
||||
'/media/libaom/src/av1/decoder/decodetxb.c',
|
||||
'/media/libaom/src/av1/decoder/detokenize.c',
|
||||
'/media/libaom/src/av1/decoder/grain_synthesis.c',
|
||||
'/media/libaom/src/av1/decoder/obu.c',
|
||||
],
|
||||
'GENERIC_EXPORTS': [
|
||||
'/media/libaom/src/aom/aom.h',
|
||||
'/media/libaom/src/aom/aom_codec.h',
|
||||
'/media/libaom/src/aom/aom_decoder.h',
|
||||
'/media/libaom/src/aom/aom_frame_buffer.h',
|
||||
'/media/libaom/src/aom/aom_image.h',
|
||||
'/media/libaom/src/aom/aom_integer.h',
|
||||
'/media/libaom/src/aom/aomdx.h',
|
||||
'/media/libaom/src/aom_dsp/aom_dsp_common.h',
|
||||
'/media/libaom/src/aom_dsp/binary_codes_reader.h',
|
||||
'/media/libaom/src/aom_dsp/bitreader.h',
|
||||
'/media/libaom/src/aom_dsp/bitreader_buffer.h',
|
||||
'/media/libaom/src/aom_dsp/blend.h',
|
||||
'/media/libaom/src/aom_dsp/entcode.h',
|
||||
'/media/libaom/src/aom_dsp/entdec.h',
|
||||
'/media/libaom/src/aom_dsp/fft_common.h',
|
||||
'/media/libaom/src/aom_dsp/intrapred_common.h',
|
||||
'/media/libaom/src/aom_dsp/odintrin.h',
|
||||
'/media/libaom/src/aom_dsp/prob.h',
|
||||
'/media/libaom/src/aom_dsp/recenter.h',
|
||||
'/media/libaom/src/aom_dsp/txfm_common.h',
|
||||
'/media/libaom/src/aom_mem/aom_mem.h',
|
||||
'/media/libaom/src/aom_ports/aom_timer.h',
|
||||
'/media/libaom/src/aom_ports/bitops.h',
|
||||
'/media/libaom/src/aom_ports/mem.h',
|
||||
'/media/libaom/src/aom_ports/sanitizer.h',
|
||||
'/media/libaom/src/aom_scale/aom_scale.h',
|
||||
'/media/libaom/src/aom_scale/yv12config.h',
|
||||
'/media/libaom/src/av1/decoder/grain_synthesis.h',
|
||||
],
|
||||
'GENERIC_SOURCES': [
|
||||
'/media/libaom/src/aom/src/aom_codec.c',
|
||||
'/media/libaom/src/aom/src/aom_decoder.c',
|
||||
'/media/libaom/src/aom/src/aom_image.c',
|
||||
'/media/libaom/src/aom/src/aom_integer.c',
|
||||
'/media/libaom/src/aom_dsp/aom_convolve.c',
|
||||
'/media/libaom/src/aom_dsp/aom_dsp_rtcd.c',
|
||||
'/media/libaom/src/aom_dsp/binary_codes_reader.c',
|
||||
'/media/libaom/src/aom_dsp/bitreader.c',
|
||||
'/media/libaom/src/aom_dsp/bitreader_buffer.c',
|
||||
'/media/libaom/src/aom_dsp/blend_a64_hmask.c',
|
||||
'/media/libaom/src/aom_dsp/blend_a64_mask.c',
|
||||
'/media/libaom/src/aom_dsp/blend_a64_vmask.c',
|
||||
'/media/libaom/src/aom_dsp/entcode.c',
|
||||
'/media/libaom/src/aom_dsp/entdec.c',
|
||||
'/media/libaom/src/aom_dsp/fft.c',
|
||||
'/media/libaom/src/aom_dsp/intrapred.c',
|
||||
'/media/libaom/src/aom_dsp/loopfilter.c',
|
||||
'/media/libaom/src/aom_dsp/odintrin.c',
|
||||
'/media/libaom/src/aom_dsp/subtract.c',
|
||||
'/media/libaom/src/aom_mem/aom_mem.c',
|
||||
'/media/libaom/src/aom_scale/aom_scale_rtcd.c',
|
||||
'/media/libaom/src/aom_scale/generic/aom_scale.c',
|
||||
'/media/libaom/src/aom_scale/generic/gen_scalers.c',
|
||||
'/media/libaom/src/aom_scale/generic/yv12config.c',
|
||||
'/media/libaom/src/aom_scale/generic/yv12extend.c',
|
||||
'/media/libaom/src/aom_util/aom_thread.c',
|
||||
'/media/libaom/src/aom_util/debug_util.c',
|
||||
'/media/libaom/src/av1/av1_dx_iface.c',
|
||||
'/media/libaom/src/av1/common/alloccommon.c',
|
||||
'/media/libaom/src/av1/common/av1_inv_txfm1d.c',
|
||||
'/media/libaom/src/av1/common/av1_inv_txfm2d.c',
|
||||
'/media/libaom/src/av1/common/av1_loopfilter.c',
|
||||
'/media/libaom/src/av1/common/av1_rtcd.c',
|
||||
'/media/libaom/src/av1/common/av1_txfm.c',
|
||||
'/media/libaom/src/av1/common/blockd.c',
|
||||
'/media/libaom/src/av1/common/cdef.c',
|
||||
'/media/libaom/src/av1/common/cdef_block.c',
|
||||
'/media/libaom/src/av1/common/cfl.c',
|
||||
'/media/libaom/src/av1/common/convolve.c',
|
||||
'/media/libaom/src/av1/common/debugmodes.c',
|
||||
'/media/libaom/src/av1/common/entropy.c',
|
||||
'/media/libaom/src/av1/common/entropymode.c',
|
||||
'/media/libaom/src/av1/common/entropymv.c',
|
||||
'/media/libaom/src/av1/common/frame_buffers.c',
|
||||
'/media/libaom/src/av1/common/idct.c',
|
||||
'/media/libaom/src/av1/common/mvref_common.c',
|
||||
'/media/libaom/src/av1/common/obu_util.c',
|
||||
'/media/libaom/src/av1/common/pred_common.c',
|
||||
'/media/libaom/src/av1/common/quant_common.c',
|
||||
'/media/libaom/src/av1/common/reconinter.c',
|
||||
'/media/libaom/src/av1/common/reconintra.c',
|
||||
'/media/libaom/src/av1/common/resize.c',
|
||||
'/media/libaom/src/av1/common/restoration.c',
|
||||
'/media/libaom/src/av1/common/scale.c',
|
||||
'/media/libaom/src/av1/common/scan.c',
|
||||
'/media/libaom/src/av1/common/seg_common.c',
|
||||
'/media/libaom/src/av1/common/thread_common.c',
|
||||
'/media/libaom/src/av1/common/tile_common.c',
|
||||
'/media/libaom/src/av1/common/timing.c',
|
||||
'/media/libaom/src/av1/common/txb_common.c',
|
||||
'/media/libaom/src/av1/common/warped_motion.c',
|
||||
'/media/libaom/src/av1/decoder/decodeframe.c',
|
||||
'/media/libaom/src/av1/decoder/decodemv.c',
|
||||
'/media/libaom/src/av1/decoder/decoder.c',
|
||||
'/media/libaom/src/av1/decoder/decodetxb.c',
|
||||
'/media/libaom/src/av1/decoder/detokenize.c',
|
||||
'/media/libaom/src/av1/decoder/grain_synthesis.c',
|
||||
'/media/libaom/src/av1/decoder/obu.c',
|
||||
],
|
||||
'IA32_EXPORTS': [
|
||||
'/media/libaom/src/aom/aom.h',
|
||||
'/media/libaom/src/aom/aom_codec.h',
|
||||
'/media/libaom/src/aom/aom_decoder.h',
|
||||
'/media/libaom/src/aom/aom_frame_buffer.h',
|
||||
'/media/libaom/src/aom/aom_image.h',
|
||||
'/media/libaom/src/aom/aom_integer.h',
|
||||
'/media/libaom/src/aom/aomdx.h',
|
||||
'/media/libaom/src/aom_dsp/aom_dsp_common.h',
|
||||
'/media/libaom/src/aom_dsp/aom_filter.h',
|
||||
'/media/libaom/src/aom_dsp/aom_simd.h',
|
||||
'/media/libaom/src/aom_dsp/aom_simd_inline.h',
|
||||
'/media/libaom/src/aom_dsp/binary_codes_reader.h',
|
||||
'/media/libaom/src/aom_dsp/bitreader.h',
|
||||
'/media/libaom/src/aom_dsp/bitreader_buffer.h',
|
||||
'/media/libaom/src/aom_dsp/blend.h',
|
||||
'/media/libaom/src/aom_dsp/entcode.h',
|
||||
'/media/libaom/src/aom_dsp/entdec.h',
|
||||
'/media/libaom/src/aom_dsp/fft_common.h',
|
||||
'/media/libaom/src/aom_dsp/intrapred_common.h',
|
||||
'/media/libaom/src/aom_dsp/odintrin.h',
|
||||
'/media/libaom/src/aom_dsp/prob.h',
|
||||
'/media/libaom/src/aom_dsp/recenter.h',
|
||||
'/media/libaom/src/aom_dsp/txfm_common.h',
|
||||
'/media/libaom/src/aom_dsp/x86/blend_mask_sse4.h',
|
||||
'/media/libaom/src/aom_dsp/x86/blend_sse4.h',
|
||||
'/media/libaom/src/aom_dsp/x86/common_avx2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/convolve.h',
|
||||
'/media/libaom/src/aom_dsp/x86/convolve_avx2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/convolve_common_intrin.h',
|
||||
'/media/libaom/src/aom_dsp/x86/convolve_sse2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/convolve_sse4_1.h',
|
||||
'/media/libaom/src/aom_dsp/x86/convolve_ssse3.h',
|
||||
'/media/libaom/src/aom_dsp/x86/intrapred_utils.h',
|
||||
'/media/libaom/src/aom_dsp/x86/intrapred_x86.h',
|
||||
'/media/libaom/src/aom_dsp/x86/lpf_common_sse2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/mem_sse2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/synonyms.h',
|
||||
'/media/libaom/src/aom_dsp/x86/synonyms_avx2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/transpose_sse2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/txfm_common_avx2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/txfm_common_sse2.h',
|
||||
'/media/libaom/src/aom_mem/aom_mem.h',
|
||||
'/media/libaom/src/aom_ports/aom_timer.h',
|
||||
'/media/libaom/src/aom_ports/bitops.h',
|
||||
'/media/libaom/src/aom_ports/mem.h',
|
||||
'/media/libaom/src/aom_ports/sanitizer.h',
|
||||
'/media/libaom/src/aom_ports/x86.h',
|
||||
'/media/libaom/src/aom_scale/aom_scale.h',
|
||||
'/media/libaom/src/aom_scale/yv12config.h',
|
||||
'/media/libaom/src/av1/common/cdef_block_simd.h',
|
||||
'/media/libaom/src/av1/decoder/grain_synthesis.h',
|
||||
],
|
||||
'IA32_SOURCES': [
|
||||
'/media/libaom/src/aom/src/aom_codec.c',
|
||||
'/media/libaom/src/aom/src/aom_decoder.c',
|
||||
'/media/libaom/src/aom/src/aom_image.c',
|
||||
'/media/libaom/src/aom/src/aom_integer.c',
|
||||
'/media/libaom/src/aom_dsp/aom_convolve.c',
|
||||
'/media/libaom/src/aom_dsp/aom_dsp_rtcd.c',
|
||||
'/media/libaom/src/aom_dsp/binary_codes_reader.c',
|
||||
'/media/libaom/src/aom_dsp/bitreader.c',
|
||||
'/media/libaom/src/aom_dsp/bitreader_buffer.c',
|
||||
'/media/libaom/src/aom_dsp/blend_a64_hmask.c',
|
||||
'/media/libaom/src/aom_dsp/blend_a64_mask.c',
|
||||
'/media/libaom/src/aom_dsp/blend_a64_vmask.c',
|
||||
'/media/libaom/src/aom_dsp/entcode.c',
|
||||
'/media/libaom/src/aom_dsp/entdec.c',
|
||||
'/media/libaom/src/aom_dsp/fft.c',
|
||||
'/media/libaom/src/aom_dsp/intrapred.c',
|
||||
'/media/libaom/src/aom_dsp/loopfilter.c',
|
||||
'/media/libaom/src/aom_dsp/odintrin.c',
|
||||
'/media/libaom/src/aom_dsp/subtract.c',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_asm_stubs.c',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_convolve_copy_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_convolve_copy_sse2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_high_subpixel_8t_sse2.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_high_subpixel_bilinear_sse2.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_subpixel_8t_intrin_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_subpixel_8t_intrin_sse2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_subpixel_8t_intrin_ssse3.c',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_subpixel_8t_sse2.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_subpixel_8t_ssse3.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_subpixel_bilinear_sse2.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_subpixel_bilinear_ssse3.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/blend_a64_hmask_sse4.c',
|
||||
'/media/libaom/src/aom_dsp/x86/blend_a64_mask_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/blend_a64_mask_sse4.c',
|
||||
'/media/libaom/src/aom_dsp/x86/blend_a64_vmask_sse4.c',
|
||||
'/media/libaom/src/aom_dsp/x86/fft_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/fft_sse2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/highbd_convolve_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/highbd_convolve_sse2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/highbd_convolve_ssse3.c',
|
||||
'/media/libaom/src/aom_dsp/x86/highbd_intrapred_asm_sse2.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/highbd_intrapred_sse2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/highbd_loopfilter_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/highbd_loopfilter_sse2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/intrapred_asm_sse2.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/intrapred_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/intrapred_sse2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/intrapred_sse4.c',
|
||||
'/media/libaom/src/aom_dsp/x86/intrapred_ssse3.c',
|
||||
'/media/libaom/src/aom_dsp/x86/inv_wht_sse2.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/loopfilter_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/loopfilter_sse2.c',
|
||||
'/media/libaom/src/aom_mem/aom_mem.c',
|
||||
'/media/libaom/src/aom_scale/aom_scale_rtcd.c',
|
||||
'/media/libaom/src/aom_scale/generic/aom_scale.c',
|
||||
'/media/libaom/src/aom_scale/generic/gen_scalers.c',
|
||||
'/media/libaom/src/aom_scale/generic/yv12config.c',
|
||||
'/media/libaom/src/aom_scale/generic/yv12extend.c',
|
||||
'/media/libaom/src/aom_util/aom_thread.c',
|
||||
'/media/libaom/src/aom_util/debug_util.c',
|
||||
'/media/libaom/src/av1/av1_dx_iface.c',
|
||||
'/media/libaom/src/av1/common/alloccommon.c',
|
||||
'/media/libaom/src/av1/common/av1_inv_txfm1d.c',
|
||||
'/media/libaom/src/av1/common/av1_inv_txfm2d.c',
|
||||
'/media/libaom/src/av1/common/av1_loopfilter.c',
|
||||
'/media/libaom/src/av1/common/av1_rtcd.c',
|
||||
'/media/libaom/src/av1/common/av1_txfm.c',
|
||||
'/media/libaom/src/av1/common/blockd.c',
|
||||
'/media/libaom/src/av1/common/cdef.c',
|
||||
'/media/libaom/src/av1/common/cdef_block.c',
|
||||
'/media/libaom/src/av1/common/cfl.c',
|
||||
'/media/libaom/src/av1/common/convolve.c',
|
||||
'/media/libaom/src/av1/common/debugmodes.c',
|
||||
'/media/libaom/src/av1/common/entropy.c',
|
||||
'/media/libaom/src/av1/common/entropymode.c',
|
||||
'/media/libaom/src/av1/common/entropymv.c',
|
||||
'/media/libaom/src/av1/common/frame_buffers.c',
|
||||
'/media/libaom/src/av1/common/idct.c',
|
||||
'/media/libaom/src/av1/common/mvref_common.c',
|
||||
'/media/libaom/src/av1/common/obu_util.c',
|
||||
'/media/libaom/src/av1/common/pred_common.c',
|
||||
'/media/libaom/src/av1/common/quant_common.c',
|
||||
'/media/libaom/src/av1/common/reconinter.c',
|
||||
'/media/libaom/src/av1/common/reconintra.c',
|
||||
'/media/libaom/src/av1/common/resize.c',
|
||||
'/media/libaom/src/av1/common/restoration.c',
|
||||
'/media/libaom/src/av1/common/scale.c',
|
||||
'/media/libaom/src/av1/common/scan.c',
|
||||
'/media/libaom/src/av1/common/seg_common.c',
|
||||
'/media/libaom/src/av1/common/thread_common.c',
|
||||
'/media/libaom/src/av1/common/tile_common.c',
|
||||
'/media/libaom/src/av1/common/timing.c',
|
||||
'/media/libaom/src/av1/common/txb_common.c',
|
||||
'/media/libaom/src/av1/common/warped_motion.c',
|
||||
'/media/libaom/src/av1/common/x86/av1_convolve_horiz_rs_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/av1_convolve_scale_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/av1_inv_txfm_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/av1_inv_txfm_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/av1_txfm_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/cdef_block_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/cdef_block_sse2.c',
|
||||
'/media/libaom/src/av1/common/x86/cdef_block_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/cdef_block_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/cfl_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/cfl_sse2.c',
|
||||
'/media/libaom/src/av1/common/x86/cfl_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/convolve_2d_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/convolve_2d_sse2.c',
|
||||
'/media/libaom/src/av1/common/x86/convolve_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/convolve_sse2.c',
|
||||
'/media/libaom/src/av1/common/x86/filterintra_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_convolve_2d_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_convolve_2d_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_convolve_2d_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_inv_txfm_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_inv_txfm_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_jnt_convolve_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_jnt_convolve_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_warp_affine_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_warp_plane_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_wiener_convolve_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_wiener_convolve_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/intra_edge_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/jnt_convolve_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/jnt_convolve_sse2.c',
|
||||
'/media/libaom/src/av1/common/x86/jnt_convolve_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/reconinter_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/reconinter_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/reconinter_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/resize_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/selfguided_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/selfguided_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/warp_plane_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/warp_plane_sse2.c',
|
||||
'/media/libaom/src/av1/common/x86/warp_plane_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/wiener_convolve_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/wiener_convolve_sse2.c',
|
||||
'/media/libaom/src/av1/decoder/decodeframe.c',
|
||||
'/media/libaom/src/av1/decoder/decodemv.c',
|
||||
'/media/libaom/src/av1/decoder/decoder.c',
|
||||
'/media/libaom/src/av1/decoder/decodetxb.c',
|
||||
'/media/libaom/src/av1/decoder/detokenize.c',
|
||||
'/media/libaom/src/av1/decoder/grain_synthesis.c',
|
||||
'/media/libaom/src/av1/decoder/obu.c',
|
||||
],
|
||||
'X64_EXPORTS': [
|
||||
'/media/libaom/src/aom/aom.h',
|
||||
'/media/libaom/src/aom/aom_codec.h',
|
||||
'/media/libaom/src/aom/aom_decoder.h',
|
||||
'/media/libaom/src/aom/aom_frame_buffer.h',
|
||||
'/media/libaom/src/aom/aom_image.h',
|
||||
'/media/libaom/src/aom/aom_integer.h',
|
||||
'/media/libaom/src/aom/aomdx.h',
|
||||
'/media/libaom/src/aom_dsp/aom_dsp_common.h',
|
||||
'/media/libaom/src/aom_dsp/aom_filter.h',
|
||||
'/media/libaom/src/aom_dsp/aom_simd.h',
|
||||
'/media/libaom/src/aom_dsp/aom_simd_inline.h',
|
||||
'/media/libaom/src/aom_dsp/binary_codes_reader.h',
|
||||
'/media/libaom/src/aom_dsp/bitreader.h',
|
||||
'/media/libaom/src/aom_dsp/bitreader_buffer.h',
|
||||
'/media/libaom/src/aom_dsp/blend.h',
|
||||
'/media/libaom/src/aom_dsp/entcode.h',
|
||||
'/media/libaom/src/aom_dsp/entdec.h',
|
||||
'/media/libaom/src/aom_dsp/fft_common.h',
|
||||
'/media/libaom/src/aom_dsp/intrapred_common.h',
|
||||
'/media/libaom/src/aom_dsp/odintrin.h',
|
||||
'/media/libaom/src/aom_dsp/prob.h',
|
||||
'/media/libaom/src/aom_dsp/recenter.h',
|
||||
'/media/libaom/src/aom_dsp/txfm_common.h',
|
||||
'/media/libaom/src/aom_dsp/x86/blend_mask_sse4.h',
|
||||
'/media/libaom/src/aom_dsp/x86/blend_sse4.h',
|
||||
'/media/libaom/src/aom_dsp/x86/common_avx2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/convolve.h',
|
||||
'/media/libaom/src/aom_dsp/x86/convolve_avx2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/convolve_common_intrin.h',
|
||||
'/media/libaom/src/aom_dsp/x86/convolve_sse2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/convolve_sse4_1.h',
|
||||
'/media/libaom/src/aom_dsp/x86/convolve_ssse3.h',
|
||||
'/media/libaom/src/aom_dsp/x86/intrapred_utils.h',
|
||||
'/media/libaom/src/aom_dsp/x86/intrapred_x86.h',
|
||||
'/media/libaom/src/aom_dsp/x86/lpf_common_sse2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/mem_sse2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/synonyms.h',
|
||||
'/media/libaom/src/aom_dsp/x86/synonyms_avx2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/transpose_sse2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/txfm_common_avx2.h',
|
||||
'/media/libaom/src/aom_dsp/x86/txfm_common_sse2.h',
|
||||
'/media/libaom/src/aom_mem/aom_mem.h',
|
||||
'/media/libaom/src/aom_ports/aom_timer.h',
|
||||
'/media/libaom/src/aom_ports/bitops.h',
|
||||
'/media/libaom/src/aom_ports/mem.h',
|
||||
'/media/libaom/src/aom_ports/sanitizer.h',
|
||||
'/media/libaom/src/aom_ports/x86.h',
|
||||
'/media/libaom/src/aom_scale/aom_scale.h',
|
||||
'/media/libaom/src/aom_scale/yv12config.h',
|
||||
'/media/libaom/src/av1/common/cdef_block_simd.h',
|
||||
'/media/libaom/src/av1/decoder/grain_synthesis.h',
|
||||
],
|
||||
'X64_SOURCES': [
|
||||
'/media/libaom/src/aom/src/aom_codec.c',
|
||||
'/media/libaom/src/aom/src/aom_decoder.c',
|
||||
'/media/libaom/src/aom/src/aom_image.c',
|
||||
'/media/libaom/src/aom/src/aom_integer.c',
|
||||
'/media/libaom/src/aom_dsp/aom_convolve.c',
|
||||
'/media/libaom/src/aom_dsp/aom_dsp_rtcd.c',
|
||||
'/media/libaom/src/aom_dsp/binary_codes_reader.c',
|
||||
'/media/libaom/src/aom_dsp/bitreader.c',
|
||||
'/media/libaom/src/aom_dsp/bitreader_buffer.c',
|
||||
'/media/libaom/src/aom_dsp/blend_a64_hmask.c',
|
||||
'/media/libaom/src/aom_dsp/blend_a64_mask.c',
|
||||
'/media/libaom/src/aom_dsp/blend_a64_vmask.c',
|
||||
'/media/libaom/src/aom_dsp/entcode.c',
|
||||
'/media/libaom/src/aom_dsp/entdec.c',
|
||||
'/media/libaom/src/aom_dsp/fft.c',
|
||||
'/media/libaom/src/aom_dsp/intrapred.c',
|
||||
'/media/libaom/src/aom_dsp/loopfilter.c',
|
||||
'/media/libaom/src/aom_dsp/odintrin.c',
|
||||
'/media/libaom/src/aom_dsp/subtract.c',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_asm_stubs.c',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_convolve_copy_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_convolve_copy_sse2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_high_subpixel_8t_sse2.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_high_subpixel_bilinear_sse2.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_subpixel_8t_intrin_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_subpixel_8t_intrin_sse2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_subpixel_8t_intrin_ssse3.c',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_subpixel_8t_sse2.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_subpixel_8t_ssse3.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_subpixel_bilinear_sse2.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/aom_subpixel_bilinear_ssse3.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/blend_a64_hmask_sse4.c',
|
||||
'/media/libaom/src/aom_dsp/x86/blend_a64_mask_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/blend_a64_mask_sse4.c',
|
||||
'/media/libaom/src/aom_dsp/x86/blend_a64_vmask_sse4.c',
|
||||
'/media/libaom/src/aom_dsp/x86/fft_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/fft_sse2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/highbd_convolve_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/highbd_convolve_sse2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/highbd_convolve_ssse3.c',
|
||||
'/media/libaom/src/aom_dsp/x86/highbd_intrapred_asm_sse2.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/highbd_intrapred_sse2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/highbd_loopfilter_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/highbd_loopfilter_sse2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/intrapred_asm_sse2.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/intrapred_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/intrapred_sse2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/intrapred_sse4.c',
|
||||
'/media/libaom/src/aom_dsp/x86/intrapred_ssse3.c',
|
||||
'/media/libaom/src/aom_dsp/x86/inv_wht_sse2.asm',
|
||||
'/media/libaom/src/aom_dsp/x86/loopfilter_avx2.c',
|
||||
'/media/libaom/src/aom_dsp/x86/loopfilter_sse2.c',
|
||||
'/media/libaom/src/aom_mem/aom_mem.c',
|
||||
'/media/libaom/src/aom_scale/aom_scale_rtcd.c',
|
||||
'/media/libaom/src/aom_scale/generic/aom_scale.c',
|
||||
'/media/libaom/src/aom_scale/generic/gen_scalers.c',
|
||||
'/media/libaom/src/aom_scale/generic/yv12config.c',
|
||||
'/media/libaom/src/aom_scale/generic/yv12extend.c',
|
||||
'/media/libaom/src/aom_util/aom_thread.c',
|
||||
'/media/libaom/src/aom_util/debug_util.c',
|
||||
'/media/libaom/src/av1/av1_dx_iface.c',
|
||||
'/media/libaom/src/av1/common/alloccommon.c',
|
||||
'/media/libaom/src/av1/common/av1_inv_txfm1d.c',
|
||||
'/media/libaom/src/av1/common/av1_inv_txfm2d.c',
|
||||
'/media/libaom/src/av1/common/av1_loopfilter.c',
|
||||
'/media/libaom/src/av1/common/av1_rtcd.c',
|
||||
'/media/libaom/src/av1/common/av1_txfm.c',
|
||||
'/media/libaom/src/av1/common/blockd.c',
|
||||
'/media/libaom/src/av1/common/cdef.c',
|
||||
'/media/libaom/src/av1/common/cdef_block.c',
|
||||
'/media/libaom/src/av1/common/cfl.c',
|
||||
'/media/libaom/src/av1/common/convolve.c',
|
||||
'/media/libaom/src/av1/common/debugmodes.c',
|
||||
'/media/libaom/src/av1/common/entropy.c',
|
||||
'/media/libaom/src/av1/common/entropymode.c',
|
||||
'/media/libaom/src/av1/common/entropymv.c',
|
||||
'/media/libaom/src/av1/common/frame_buffers.c',
|
||||
'/media/libaom/src/av1/common/idct.c',
|
||||
'/media/libaom/src/av1/common/mvref_common.c',
|
||||
'/media/libaom/src/av1/common/obu_util.c',
|
||||
'/media/libaom/src/av1/common/pred_common.c',
|
||||
'/media/libaom/src/av1/common/quant_common.c',
|
||||
'/media/libaom/src/av1/common/reconinter.c',
|
||||
'/media/libaom/src/av1/common/reconintra.c',
|
||||
'/media/libaom/src/av1/common/resize.c',
|
||||
'/media/libaom/src/av1/common/restoration.c',
|
||||
'/media/libaom/src/av1/common/scale.c',
|
||||
'/media/libaom/src/av1/common/scan.c',
|
||||
'/media/libaom/src/av1/common/seg_common.c',
|
||||
'/media/libaom/src/av1/common/thread_common.c',
|
||||
'/media/libaom/src/av1/common/tile_common.c',
|
||||
'/media/libaom/src/av1/common/timing.c',
|
||||
'/media/libaom/src/av1/common/txb_common.c',
|
||||
'/media/libaom/src/av1/common/warped_motion.c',
|
||||
'/media/libaom/src/av1/common/x86/av1_convolve_horiz_rs_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/av1_convolve_scale_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/av1_inv_txfm_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/av1_inv_txfm_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/av1_txfm_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/cdef_block_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/cdef_block_sse2.c',
|
||||
'/media/libaom/src/av1/common/x86/cdef_block_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/cdef_block_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/cfl_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/cfl_sse2.c',
|
||||
'/media/libaom/src/av1/common/x86/cfl_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/convolve_2d_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/convolve_2d_sse2.c',
|
||||
'/media/libaom/src/av1/common/x86/convolve_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/convolve_sse2.c',
|
||||
'/media/libaom/src/av1/common/x86/filterintra_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_convolve_2d_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_convolve_2d_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_convolve_2d_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_inv_txfm_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_inv_txfm_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_jnt_convolve_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_jnt_convolve_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_warp_affine_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_warp_plane_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_wiener_convolve_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/highbd_wiener_convolve_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/intra_edge_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/jnt_convolve_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/jnt_convolve_sse2.c',
|
||||
'/media/libaom/src/av1/common/x86/jnt_convolve_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/reconinter_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/reconinter_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/reconinter_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/resize_ssse3.c',
|
||||
'/media/libaom/src/av1/common/x86/selfguided_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/selfguided_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/warp_plane_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/warp_plane_sse2.c',
|
||||
'/media/libaom/src/av1/common/x86/warp_plane_sse4.c',
|
||||
'/media/libaom/src/av1/common/x86/wiener_convolve_avx2.c',
|
||||
'/media/libaom/src/av1/common/x86/wiener_convolve_sse2.c',
|
||||
'/media/libaom/src/av1/decoder/decodeframe.c',
|
||||
'/media/libaom/src/av1/decoder/decodemv.c',
|
||||
'/media/libaom/src/av1/decoder/decoder.c',
|
||||
'/media/libaom/src/av1/decoder/decodetxb.c',
|
||||
'/media/libaom/src/av1/decoder/detokenize.c',
|
||||
'/media/libaom/src/av1/decoder/grain_synthesis.c',
|
||||
'/media/libaom/src/av1/decoder/obu.c',
|
||||
],
|
||||
}
|
||||
@@ -1,148 +0,0 @@
|
||||
---
|
||||
Language: Cpp
|
||||
# BasedOnStyle: Google
|
||||
# Generated with clang-format 7.0.1
|
||||
AccessModifierOffset: -1
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignConsecutiveAssignments: false
|
||||
AlignConsecutiveDeclarations: false
|
||||
AlignEscapedNewlines: Left
|
||||
AlignOperands: true
|
||||
AlignTrailingComments: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: true
|
||||
AllowShortIfStatementsOnASingleLine: true
|
||||
AllowShortLoopsOnASingleLine: true
|
||||
AlwaysBreakAfterDefinitionReturnType: None
|
||||
AlwaysBreakAfterReturnType: None
|
||||
AlwaysBreakBeforeMultilineStrings: true
|
||||
AlwaysBreakTemplateDeclarations: true
|
||||
BinPackArguments: true
|
||||
BinPackParameters: true
|
||||
BraceWrapping:
|
||||
AfterClass: false
|
||||
AfterControlStatement: false
|
||||
AfterEnum: false
|
||||
AfterFunction: false
|
||||
AfterNamespace: false
|
||||
AfterObjCDeclaration: false
|
||||
AfterStruct: false
|
||||
AfterUnion: false
|
||||
AfterExternBlock: false
|
||||
BeforeCatch: false
|
||||
BeforeElse: false
|
||||
IndentBraces: false
|
||||
SplitEmptyFunction: true
|
||||
SplitEmptyRecord: true
|
||||
SplitEmptyNamespace: true
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeBraces: Attach
|
||||
BreakBeforeInheritanceComma: false
|
||||
BreakInheritanceList: BeforeColon
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializersBeforeComma: false
|
||||
BreakConstructorInitializers: BeforeColon
|
||||
BreakAfterJavaFieldAnnotations: false
|
||||
BreakStringLiterals: true
|
||||
ColumnLimit: 80
|
||||
CommentPragmas: '^ IWYU pragma:'
|
||||
CompactNamespaces: false
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
ContinuationIndentWidth: 4
|
||||
Cpp11BracedListStyle: false
|
||||
DerivePointerAlignment: false
|
||||
DisableFormat: false
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
FixNamespaceComments: true
|
||||
ForEachMacros:
|
||||
- foreach
|
||||
- Q_FOREACH
|
||||
- BOOST_FOREACH
|
||||
IncludeBlocks: Preserve
|
||||
IncludeCategories:
|
||||
- Regex: '^<ext/.*\.h>'
|
||||
Priority: 2
|
||||
- Regex: '^<.*\.h>'
|
||||
Priority: 1
|
||||
- Regex: '^<.*'
|
||||
Priority: 2
|
||||
- Regex: '.*'
|
||||
Priority: 3
|
||||
IncludeIsMainRegex: '([-_](test|unittest))?$'
|
||||
IndentCaseLabels: true
|
||||
IndentPPDirectives: None
|
||||
IndentWidth: 2
|
||||
IndentWrappedFunctionNames: false
|
||||
JavaScriptQuotes: Leave
|
||||
JavaScriptWrapImports: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
MaxEmptyLinesToKeep: 1
|
||||
NamespaceIndentation: None
|
||||
ObjCBinPackProtocolList: Never
|
||||
ObjCBlockIndentWidth: 2
|
||||
ObjCSpaceAfterProperty: false
|
||||
ObjCSpaceBeforeProtocolList: false
|
||||
PenaltyBreakAssignment: 2
|
||||
PenaltyBreakBeforeFirstCallParameter: 1
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyBreakString: 1000
|
||||
PenaltyBreakTemplateDeclaration: 10
|
||||
PenaltyExcessCharacter: 1000000
|
||||
PenaltyReturnTypeOnItsOwnLine: 200
|
||||
PointerAlignment: Right
|
||||
RawStringFormats:
|
||||
- Language: Cpp
|
||||
Delimiters:
|
||||
- cc
|
||||
- CC
|
||||
- cpp
|
||||
- Cpp
|
||||
- CPP
|
||||
- 'c++'
|
||||
- 'C++'
|
||||
CanonicalDelimiter: ''
|
||||
BasedOnStyle: google
|
||||
- Language: TextProto
|
||||
Delimiters:
|
||||
- pb
|
||||
- PB
|
||||
- proto
|
||||
- PROTO
|
||||
EnclosingFunctions:
|
||||
- EqualsProto
|
||||
- EquivToProto
|
||||
- PARSE_PARTIAL_TEXT_PROTO
|
||||
- PARSE_TEST_PROTO
|
||||
- PARSE_TEXT_PROTO
|
||||
- ParseTextOrDie
|
||||
- ParseTextProtoOrDie
|
||||
CanonicalDelimiter: ''
|
||||
BasedOnStyle: google
|
||||
ReflowComments: true
|
||||
SortIncludes: false
|
||||
SortUsingDeclarations: true
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceAfterTemplateKeyword: true
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeCpp11BracedList: false
|
||||
SpaceBeforeCtorInitializerColon: true
|
||||
SpaceBeforeInheritanceColon: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceBeforeRangeBasedForLoopColon: true
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesBeforeTrailingComments: 2
|
||||
SpacesInAngles: false
|
||||
SpacesInContainerLiterals: false
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: Auto
|
||||
TabWidth: 8
|
||||
UseTab: Never
|
||||
...
|
||||
|
||||
@@ -1,102 +0,0 @@
|
||||
# Generated with cmake-format 0.5.1
|
||||
# How wide to allow formatted cmake files
|
||||
line_width = 80
|
||||
|
||||
# How many spaces to tab for indent
|
||||
tab_size = 2
|
||||
|
||||
# If arglists are longer than this, break them always
|
||||
max_subargs_per_line = 10
|
||||
|
||||
# If true, separate flow control names from their parentheses with a space
|
||||
separate_ctrl_name_with_space = False
|
||||
|
||||
# If true, separate function names from parentheses with a space
|
||||
separate_fn_name_with_space = False
|
||||
|
||||
# If a statement is wrapped to more than one line, than dangle the closing
|
||||
# parenthesis on it's own line
|
||||
dangle_parens = False
|
||||
|
||||
# What character to use for bulleted lists
|
||||
bullet_char = '*'
|
||||
|
||||
# What character to use as punctuation after numerals in an enumerated list
|
||||
enum_char = '.'
|
||||
|
||||
# What style line endings to use in the output.
|
||||
line_ending = u'unix'
|
||||
|
||||
# Format command names consistently as 'lower' or 'upper' case
|
||||
command_case = u'lower'
|
||||
|
||||
# Format keywords consistently as 'lower' or 'upper' case
|
||||
keyword_case = u'unchanged'
|
||||
|
||||
# Specify structure for custom cmake functions
|
||||
additional_commands = {
|
||||
"foo": {
|
||||
"flags": [
|
||||
"BAR",
|
||||
"BAZ"
|
||||
],
|
||||
"kwargs": {
|
||||
"HEADERS": "*",
|
||||
"DEPENDS": "*",
|
||||
"SOURCES": "*"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# A list of command names which should always be wrapped
|
||||
always_wrap = []
|
||||
|
||||
# Specify the order of wrapping algorithms during successive reflow attempts
|
||||
algorithm_order = [0, 1, 2, 3, 4]
|
||||
|
||||
# If true, the argument lists which are known to be sortable will be sorted
|
||||
# lexicographicall
|
||||
autosort = False
|
||||
|
||||
# enable comment markup parsing and reflow
|
||||
enable_markup = True
|
||||
|
||||
# If comment markup is enabled, don't reflow the first comment block in
|
||||
# eachlistfile. Use this to preserve formatting of your
|
||||
# copyright/licensestatements.
|
||||
first_comment_is_literal = False
|
||||
|
||||
# If comment markup is enabled, don't reflow any comment block which matchesthis
|
||||
# (regex) pattern. Default is `None` (disabled).
|
||||
literal_comment_pattern = None
|
||||
|
||||
# Regular expression to match preformat fences in comments
|
||||
# default=r'^\s*([`~]{3}[`~]*)(.*)$'
|
||||
fence_pattern = u'^\\s*([`~]{3}[`~]*)(.*)$'
|
||||
|
||||
# Regular expression to match rulers in comments
|
||||
# default=r'^\s*[^\w\s]{3}.*[^\w\s]{3}$'
|
||||
ruler_pattern = u'^\\s*[^\\w\\s]{3}.*[^\\w\\s]{3}$'
|
||||
|
||||
# If true, emit the unicode byte-order mark (BOM) at the start of the file
|
||||
emit_byteorder_mark = False
|
||||
|
||||
# If a comment line starts with at least this many consecutive hash characters,
|
||||
# then don't lstrip() them off. This allows for lazy hash rulers where the first
|
||||
# hash char is not separated by space
|
||||
hashruler_min_length = 10
|
||||
|
||||
# If true, then insert a space between the first hash char and remaining hash
|
||||
# chars in a hash ruler, and normalize it's length to fill the column
|
||||
canonicalize_hashrulers = True
|
||||
|
||||
# Specify the encoding of the input file. Defaults to utf-8.
|
||||
input_encoding = u'utf-8'
|
||||
|
||||
# Specify the encoding of the output file. Defaults to utf-8. Note that cmake
|
||||
# only claims to support utf-8 so be careful when using anything else
|
||||
output_encoding = u'utf-8'
|
||||
|
||||
# A dictionary containing any per-command configuration overrides. Currently
|
||||
# only `command_case` is supported.
|
||||
per_command = {}
|
||||
@@ -1,18 +0,0 @@
|
||||
*.[chs] filter=fixtabswsp
|
||||
*.[ch]pp filter=fixtabswsp
|
||||
*.[ch]xx filter=fixtabswsp
|
||||
*.asm filter=fixtabswsp
|
||||
*.php filter=fixtabswsp
|
||||
*.pl filter=fixtabswsp
|
||||
*.sh filter=fixtabswsp
|
||||
*.txt filter=fixwsp
|
||||
[Mm]akefile filter=fixwsp
|
||||
*.mk filter=fixwsp
|
||||
*.rc -crlf
|
||||
*.ds[pw] -crlf
|
||||
*.bat -crlf
|
||||
*.mmp -crlf
|
||||
*.dpj -crlf
|
||||
*.pjt -crlf
|
||||
*.vcp -crlf
|
||||
*.inf -crlf
|
||||
@@ -1,95 +0,0 @@
|
||||
Adrian Grange <agrange@google.com>
|
||||
Aℓex Converse <aconverse@google.com>
|
||||
Aℓex Converse <aconverse@google.com> <alex.converse@gmail.com>
|
||||
Alexis Ballier <aballier@gentoo.org> <alexis.ballier@gmail.com>
|
||||
Alpha Lam <hclam@google.com> <hclam@chromium.org>
|
||||
Andrey Norkin <anorkin@netflix.com>
|
||||
Angie Chiang <angiebird@google.com>
|
||||
Arild Fuldseth <arilfuld@cisco.com> <arild.fuldseth@gmail.com>
|
||||
Arild Fuldseth <arilfuld@cisco.com> <arilfuld@cisco.com>
|
||||
Aasaipriya Chandran <aasaipriya.c@ittiam.com>
|
||||
Aasaipriya Chandran <aasaipriya.c@ittiam.com> Aasaipriya C <100778@ittiam.com>
|
||||
Bohan Li <bohanli@google.com>
|
||||
Changjun Yang <changjun.yang@intel.com>
|
||||
Chi Yo Tsai <chiyotsai@google.com>
|
||||
Chi Yo Tsai <chiyotsai@google.com> <chiyotsai@dhcp-100-106-128-213.corp.google.com>
|
||||
Chm <chm@rock-chips.com>
|
||||
Damon Shen <yjshen@google.com>
|
||||
Daniele Castagna <dcastagna@chromium.org> <dcastagna@google.com>
|
||||
Deb Mukherjee <debargha@google.com>
|
||||
Elliott Karpilovsky <elliottk@google.com>
|
||||
Emil Keyder <emilkeyder@google.com>
|
||||
Erik Niemeyer <erik.a.niemeyer@intel.com> <erik.a.niemeyer@gmail.com>
|
||||
Frederic Barbier <frederic.barbier@allegrodvt.com> <fbarbier.contact@gmail.com>
|
||||
Fyodor Kyslov <kyslov@google.com>
|
||||
Grant Hsu <grant.hsu@cidana.com> <grant.hsu@gmail.com>
|
||||
Guillaume Martres <smarter@ubuntu.com>
|
||||
Guillaume Martres <smarter@ubuntu.com> <gmartres@google.com>
|
||||
Guillaume Martres <smarter@ubuntu.com> <smarter3@gmail.com>
|
||||
Guillaume Martres <smarter@ubuntu.com> <gmartres@mozilla.com>
|
||||
Hangyu Kuang <hkuang@google.com>
|
||||
Hui Su <huisu@google.com>
|
||||
Iole Moccagatta <iole.moccagatta@gmail.com>
|
||||
Jacky Chen <jackychen@google.com>
|
||||
James Zern <jzern@google.com> <jzern@google.cOm>
|
||||
Jean-Marc Valin <jmvalin@jmvalin.ca> <jmvalin@mozilla.com>
|
||||
Jim Bankoski <jimbankoski@google.com>
|
||||
Johann Koenig <johannkoenig@google.com>
|
||||
Johann Koenig <johannkoenig@google.com> <johann.koenig@duck.com>
|
||||
Johann Koenig <johannkoenig@google.com> <johann.koenig@gmail.com>
|
||||
Johann Koenig <johannkoenig@google.com> <johannkoenig@chromium.org>
|
||||
John Koleszar <jkoleszar@google.com>
|
||||
Joshua Litt <joshualitt@google.com> <joshualitt@chromium.org>
|
||||
Lokeshwar Reddy B <lokeshwar.reddy@ittiam.com>
|
||||
Logan Goldberg <logangw@google.com>
|
||||
Luc Trudeau <luc@trud.ca>
|
||||
Luc Trudeau <luc@trud.ca> <ltrudeau@mozilla.com>
|
||||
Marco Paniconi <marpan@google.com>
|
||||
Marco Paniconi <marpan@google.com> <marpan@chromium.org>
|
||||
Michael Bebenita <mbebenita@gmail.com> <mbebenita@mozilla.com>
|
||||
Michael Horowitz <mhoro@webrtc.org> <mhoro@google.com>
|
||||
Mingliang Chen <mlchen@google.com>
|
||||
Monty Montgomery <cmontgomery@mozilla.com>
|
||||
Nathan E. Egge <negge@mozilla.com>
|
||||
Nathan E. Egge <negge@mozilla.com> <negge@dgql.org>
|
||||
Pascal Massimino <pascal.massimino@gmail.com>
|
||||
Pascal Massimino <pascal.massimino@gmail.com> <skal@google.com>
|
||||
Paul Wilkins <paulwilkins@google.com>
|
||||
Peng Bin <binpengsmail@gmail.com>
|
||||
Peng Bin <binpengsmail@gmail.com> <pengbin@kingsoft.com>
|
||||
Peter de Rivaz <peter.derivaz@gmail.com> <peter.derivaz@argondesign.com>
|
||||
Rachel Barker <rachelbarker@google.com> David Barker <david.barker@argondesign.com>
|
||||
Ralph Giles <giles@xiph.org> <giles@entropywave.com>
|
||||
Ralph Giles <giles@xiph.org> <giles@mozilla.com>
|
||||
Remya Prakasan <remya.prakasan@ittiam.com>
|
||||
Roger Zhou <youzhou@microsoft.com>
|
||||
Ronald S. Bultje <rsbultje@gmail.com> <rbultje@google.com>
|
||||
Ryan Lei <ryanlei@fb.com> <ryan.z.lei@intel.com>
|
||||
Ryan Lei <ryanlei@fb.com> <ryan.lei@intel.com>
|
||||
Ryan Lei <ryanlei@fb.com> <zlei3@ZLEI3-DESK.amr.corp.intel.com>
|
||||
Sachin Kumar Garg <sachin.kumargarg@ittiam.com>
|
||||
Sai Deng <sdeng@google.com>
|
||||
Sami Pietilä <samipietila@google.com>
|
||||
Sarah Parker <sarahparker@google.com>
|
||||
Tamar Levy <tamar.levy@intel.com>
|
||||
Tamar Levy <tamar.levy@intel.com> <levytamar82@gmail.com>
|
||||
Tero Rintaluoma <teror@google.com> <tero.rintaluoma@on2.com>
|
||||
Thomas Davies Thomas <thdavies@cisco.com>
|
||||
Timothy B. Terriberry <tterribe@xiph.org>
|
||||
Timothy B. Terriberry <tterribe@xiph.org> <tterriberry@mozilla.com>
|
||||
Timothy B. Terriberry <tterribe@xiph.org> Tim Terriberry <tterriberry@mozilla.com>
|
||||
Tom Finegan <tomfinegan@google.com>
|
||||
Tom Finegan <tomfinegan@google.com> <tomfinegan@chromium.org>
|
||||
Tristan Matthews <tmatth@videolan.org> <le.businessman@gmail.com>
|
||||
Venkat Sanampudi <sanampudi.venkatarao@ittiam.com>
|
||||
Wei-Ting Lin <weitinglin@google.com>
|
||||
Wei-Ting Lin <weitinglin@google.com> <weitingco@gmail.com>
|
||||
Wenyao Liu <wenyao.liu@cidana.com>
|
||||
Will Bresnahan <bill.wresnahan@gmail.com>
|
||||
Yaowu Xu <yaowu@google.com> <adam@xuyaowu.com>
|
||||
Yaowu Xu <yaowu@google.com> <yaowu@xuyaowu.com>
|
||||
Yaowu Xu <yaowu@google.com> <yaowu@yaowu-macbookpro.roam.corp.google.com>
|
||||
Yaowu Xu <yaowu@google.com> <Yaowu Xu>
|
||||
Yaowu Xu <yaowu@google.com> <yaowu.google.com>
|
||||
Zhipin Deng <zhipin.deng@intel.com>
|
||||
Zoe Liu <zoeliu@gmail.com> <zoeliu@google.com>
|
||||
@@ -1,292 +0,0 @@
|
||||
# This file is automatically generated from the git commit history
|
||||
# by tools/gen_authors.sh.
|
||||
|
||||
Aamir Anis <aanis@google.com>
|
||||
Aaron Watry <awatry@gmail.com>
|
||||
Aasaipriya Chandran <aasaipriya.c@ittiam.com>
|
||||
Abo Talib Mahfoodh <ab.mahfoodh@gmail.com>
|
||||
Adrian Grange <agrange@google.com>
|
||||
Ahmad Sharif <asharif@google.com>
|
||||
Akshata Jadhav <akshata.jadhav@ittiam.com>
|
||||
Alexander Bokov <alexanderbokov@google.com>
|
||||
Alexander Voronov <avoronov@graphics.cs.msu.ru>
|
||||
Aℓex Converse <aconverse@google.com>
|
||||
Alexis Ballier <aballier@gentoo.org>
|
||||
Alex Peterson <petersonab@google.com>
|
||||
Alok Ahuja <waveletcoeff@gmail.com>
|
||||
Alpha Lam <hclam@google.com>
|
||||
A.Mahfoodh <ab.mahfoodh@gmail.com>
|
||||
Ami Fischman <fischman@chromium.org>
|
||||
Andoni Morales Alastruey <ylatuya@gmail.com>
|
||||
Andres Mejia <mcitadel@gmail.com>
|
||||
Andrew Russell <anrussell@google.com>
|
||||
Andrey Norkin <anorkin@netflix.com>
|
||||
Angie Chiang <angiebird@google.com>
|
||||
Aniket Dhok <aniket.dhok@ittiam.com>
|
||||
Aniket Wanare <Aniket.wanare@ittiam.com>
|
||||
Ankur Saxena <ankurs@nvidia.com>
|
||||
Arild Fuldseth <arilfuld@cisco.com>
|
||||
Aron Rosenberg <arosenberg@logitech.com>
|
||||
Arun Singh Negi <arun.negi@ittiam.com>
|
||||
Attila Nagy <attilanagy@google.com>
|
||||
Bohan Li <bohanli@google.com>
|
||||
Brennan Shacklett <bshacklett@mozilla.com>
|
||||
Brion Vibber <bvibber@wikimedia.org>
|
||||
Bruno Berthier <bruno.berthier@allegrodvt.com>
|
||||
Changjun Yang <changjun.yang@intel.com>
|
||||
Charles 'Buck' Krasic <ckrasic@google.com>
|
||||
Cheng Chen <chengchen@google.com>
|
||||
Cherma Rajan A <cherma.rajan@ittiam.com>
|
||||
Chethan Kumar R E <chethan.kumar@ittiam.com>
|
||||
Chi Yo Tsai <chiyotsai@google.com>
|
||||
Chm <chm@rock-chips.com>
|
||||
Christian Duvivier <cduvivier@google.com>
|
||||
Christopher Degawa <christopher.degawa@intel.com>
|
||||
Cyril Concolato <cconcolato@netflix.com>
|
||||
Dake He <dkhe@google.com>
|
||||
Damon Shen <yjshen@google.com>
|
||||
Dandan Ding <vickyddding@gmail.com>
|
||||
Daniele Castagna <dcastagna@chromium.org>
|
||||
Daniel Kang <ddkang@google.com>
|
||||
Daniel Max Valenzuela <daniel.vt@samsung.com>
|
||||
Danil Chapovalov <danilchap@google.com>
|
||||
David Major <dmajor@mozilla.com>
|
||||
David Michael Barr <b@rr-dav.id.au>
|
||||
David Turner <david.turner@argondesign.com>
|
||||
Deb Mukherjee <debargha@google.com>
|
||||
Deepa K G <deepa.kg@ittiam.com>
|
||||
Di Chen <chendixi@google.com>
|
||||
Dim Temp <dimtemp0@gmail.com>
|
||||
Dmitry Kovalev <dkovalev@google.com>
|
||||
Dominic Symes <dominic.symes@arm.com>
|
||||
Dragan Mrdjan <dmrdjan@mips.com>
|
||||
Ed Baker <edward.baker@intel.com>
|
||||
Edward Hervey <edward@centricular.com>
|
||||
Ehsan Akhgari <ehsan.akhgari@gmail.com>
|
||||
Elliott Karpilovsky <elliottk@google.com>
|
||||
Emil Keyder <emilkeyder@google.com>
|
||||
Erik Niemeyer <erik.a.niemeyer@intel.com>
|
||||
Fabio Pedretti <fabio.ped@libero.it>
|
||||
Fangwen Fu <fangwen.fu@intel.com>
|
||||
Fergus Simpson <afergs@google.com>
|
||||
Frank Bossen <fbossen@gmail.com>
|
||||
Frank Galligan <fgalligan@google.com>
|
||||
Frederic Barbier <frederic.barbier@allegrodvt.com>
|
||||
Fredrik Söderquist <fs@opera.com>
|
||||
Fritz Koenig <frkoenig@google.com>
|
||||
Fyodor Kyslov <kyslov@google.com>
|
||||
Gaute Strokkenes <gaute.strokkenes@broadcom.com>
|
||||
Geza Lore <gezalore@gmail.com>
|
||||
Ghislain MARY <ghislainmary2@gmail.com>
|
||||
Giuseppe Scrivano <gscrivano@gnu.org>
|
||||
Gordana Cmiljanovic <gordana.cmiljanovic@imgtec.com>
|
||||
Grant Hsu <grant.hsu@cidana.com>
|
||||
Guillaume Martres <smarter@ubuntu.com>
|
||||
Guillermo Ballester Valor <gbvalor@gmail.com>
|
||||
Hamsalekha S <hamsalekha.s@ittiam.com>
|
||||
Hangyu Kuang <hkuang@google.com>
|
||||
Hanno Böck <hanno@hboeck.de>
|
||||
Harish Mahendrakar <harish.mahendrakar@ittiam.com>
|
||||
Henrik Lundin <hlundin@google.com>
|
||||
Hien Ho <hienho@google.com>
|
||||
Hui Su <huisu@google.com>
|
||||
Ilie Halip <ilie.halip@gmail.com>
|
||||
Ilya Brailovskiy <brailovs@lab126.com>
|
||||
Imdad Sardharwalla <imdad.sardharwalla@argondesign.com>
|
||||
Iole Moccagatta <iole.moccagatta@gmail.com>
|
||||
Ivan Krasin <krasin@chromium.org>
|
||||
Ivan Maltz <ivanmaltz@google.com>
|
||||
Jacek Caban <cjacek@gmail.com>
|
||||
Jack Haughton <jack.haughton@argondesign.com>
|
||||
Jacky Chen <jackychen@google.com>
|
||||
James Berry <jamesberry@google.com>
|
||||
James Yu <james.yu@linaro.org>
|
||||
James Zern <jzern@google.com>
|
||||
Jan Gerber <j@mailb.org>
|
||||
Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
Janne Salonen <jsalonen@google.com>
|
||||
Jayasanker J <jayasanker.j@ittiam.com>
|
||||
Jayashri Murugan <jayashri.murugan@ittiam.com>
|
||||
Jean-Marc Valin <jmvalin@jmvalin.ca>
|
||||
Jean-Yves Avenard <jyavenard@mozilla.com>
|
||||
Jeff Faust <jfaust@google.com>
|
||||
Jeff Muizelaar <jmuizelaar@mozilla.com>
|
||||
Jeff Petkau <jpet@chromium.org>
|
||||
Jerome Jiang <jianj@google.com>
|
||||
Jia Jia <jia.jia@linaro.org>
|
||||
Jian Zhou <zhoujian@google.com>
|
||||
Jim Bankoski <jimbankoski@google.com>
|
||||
Jingning Han <jingning@google.com>
|
||||
Joe Young <joeyoung@google.com>
|
||||
Joey Parrish <joeyparrish@google.com>
|
||||
Johann Koenig <johannkoenig@google.com>
|
||||
John Koleszar <jkoleszar@google.com>
|
||||
Johnny Klonaris <google@jawknee.com>
|
||||
John Stark <jhnstrk@gmail.com>
|
||||
Jonathan Matthews <jonathan.matthews@argondesign.com>
|
||||
Joshua Bleecher Snyder <josh@treelinelabs.com>
|
||||
Joshua Litt <joshualitt@google.com>
|
||||
Josh Verdejo <joverdejo@google.com>
|
||||
Julia Robson <juliamrobson@gmail.com>
|
||||
Justin Clift <justin@salasaga.org>
|
||||
Justin Lebar <justin.lebar@gmail.com>
|
||||
Katsuhisa Yuasa <berupon@gmail.com>
|
||||
Kavi Ramamurthy <kavii@google.com>
|
||||
KO Myung-Hun <komh@chollian.net>
|
||||
Krishna Malladi <kmalladi@google.com>
|
||||
Kyle Siefring <kylesiefring@gmail.com>
|
||||
Larisa Markeeva <lmarkeeva@google.com>
|
||||
Lauren Partin <lpartin@google.com>
|
||||
Lawrence Velázquez <larryv@macports.org>
|
||||
leolzhao <leolzhao@tencent.com>
|
||||
Lester Lu <kslu@google.com>
|
||||
liang zhao <leolzhao@tencent.com>
|
||||
Linfeng Zhang <linfengz@google.com>
|
||||
Link.Meng <monthev@gmail.com>
|
||||
Logan Goldberg <logangw@google.com>
|
||||
Lokeshwar Reddy B <lokeshwar.reddy@ittiam.com>
|
||||
Lou Quillio <louquillio@google.com>
|
||||
Luca Barbato <lu_zero@gentoo.org>
|
||||
Luca Versari <veluca@google.com>
|
||||
Luc Trudeau <luc@trud.ca>
|
||||
Madhu Peringassery Krishnan <mpkrishnan@tencent.com>
|
||||
Makoto Kato <makoto.kt@gmail.com>
|
||||
Mans Rullgard <mans@mansr.com>
|
||||
Marco Paniconi <marpan@google.com>
|
||||
Mark Mentovai <mark@chromium.org>
|
||||
Mark Wachsler <wachsler@google.com>
|
||||
Martin Ettl <ettl.martin78@googlemail.com>
|
||||
Martin Storsjo <martin@martin.st>
|
||||
Maryla <maryla@google.com>
|
||||
Matthew Heaney <matthewjheaney@chromium.org>
|
||||
Matthieu Vaudano <matthieu.vaudano@allegrodvt.com>
|
||||
Mattias Hansson <mattias.hansson@arm.com>
|
||||
Maxym Dmytrychenko <maxim.d33@gmail.com>
|
||||
Michael Bebenita <mbebenita@gmail.com>
|
||||
Michael Horowitz <mhoro@webrtc.org>
|
||||
Michael Kohler <michaelkohler@live.com>
|
||||
Michelle Findlay-Olynyk <mfo@google.com>
|
||||
Mike Frysinger <vapier@chromium.org>
|
||||
Mike Hommey <mhommey@mozilla.com>
|
||||
Mikhal Shemer <mikhal@google.com>
|
||||
Minghai Shang <minghai@google.com>
|
||||
Mingliang Chen <mlchen@google.com>
|
||||
Mirko Bonadei <mbonadei@google.com>
|
||||
Monty Montgomery <cmontgomery@mozilla.com>
|
||||
Morton Jonuschat <yabawock@gmail.com>
|
||||
Mudassir Galagnath <mudassir.galaganath@ittiam.com>
|
||||
Mufaddal Chakera <mufaddal.chakera@ittiam.com>
|
||||
Nathan E. Egge <negge@mozilla.com>
|
||||
Neeraj Gadgil <neeraj.gadgil@ittiam.com>
|
||||
Neil Birkbeck <birkbeck@google.com>
|
||||
Nico Weber <thakis@chromium.org>
|
||||
Nithya V S <nithya.vs@ittiam.com>
|
||||
Ola Hugosson <ola.hugosson@arm.com>
|
||||
Oleg Nalivayko <o13g86@gmail.com>
|
||||
Parag Salasakar <img.mips1@gmail.com>
|
||||
Pascal Massimino <pascal.massimino@gmail.com>
|
||||
Patrik Westin <patrik.westin@gmail.com>
|
||||
Paul Wilkins <paulwilkins@google.com>
|
||||
Pavel Frolov <pavel.frolov@vicuesoft.com>
|
||||
Pavol Rusnak <stick@gk2.sk>
|
||||
Paweł Hajdan <phajdan@google.com>
|
||||
Peng Bin <binpengsmail@gmail.com>
|
||||
Pengchong Jin <pengchong@google.com>
|
||||
Peter Boström <pbos@google.com>
|
||||
Peter de Rivaz <peter.derivaz@gmail.com>
|
||||
Peter Kasting <pkasting@chromium.org>
|
||||
Philip Jägenstedt <philipj@opera.com>
|
||||
Priit Laes <plaes@plaes.org>
|
||||
Qiu Jianlin <jianlin.qiu@intel.com>
|
||||
Rachel Barker <rachelbarker@google.com>
|
||||
Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
|
||||
Rafaël Carré <funman@videolan.org>
|
||||
Ralph Giles <giles@xiph.org>
|
||||
Ranjit Kumar Tulabandu <ranjit.tulabandu@ittiam.com>
|
||||
Ravi Chaudhary <ravi.chaudhary@ittiam.com>
|
||||
Remya Prakasan <remya.prakasan@ittiam.com>
|
||||
Remy Foray <remy.foray@allegrodvt.com>
|
||||
Rob Bradford <rob@linux.intel.com>
|
||||
Robert-André Mauchin <zebob.m@gmail.com>
|
||||
Robert Chin <robertchin@google.com>
|
||||
Roger Zhou <youzhou@microsoft.com>
|
||||
Rohit Athavale <rathaval@xilinx.com>
|
||||
Ronald S. Bultje <rsbultje@gmail.com>
|
||||
Rostislav Pehlivanov <rpehlivanov@mozilla.com>
|
||||
Ruiling Song <ruiling.song@intel.com>
|
||||
Rui Ueyama <ruiu@google.com>
|
||||
Rupert Swarbrick <rupert.swarbrick@argondesign.com>
|
||||
Ryan Lei <ryanlei@fb.com>
|
||||
Ryan Overbeck <rover@google.com>
|
||||
Sachin Kumar Garg <sachin.kumargarg@ittiam.com>
|
||||
Sai Deng <sdeng@google.com>
|
||||
Sami Boukortt <sboukortt@google.com>
|
||||
Sami Pietilä <samipietila@google.com>
|
||||
Sarah Parker <sarahparker@google.com>
|
||||
Sasi Inguva <isasi@google.com>
|
||||
Satish Kumar Suman <satish.suman@ittiam.com>
|
||||
Scott Graham <scottmg@chromium.org>
|
||||
Scott LaVarnway <slavarnway@google.com>
|
||||
Sean DuBois <sean@siobud.com>
|
||||
Sean McGovern <gseanmcg@gmail.com>
|
||||
Sean Purser-Haskell <seanhaskell@google.com>
|
||||
Sebastien Alaiwan <sebastien.alaiwan@allegrodvt.com>
|
||||
Sergey Kolomenkin <kolomenkin@gmail.com>
|
||||
Sergey Ulanov <sergeyu@chromium.org>
|
||||
S Hamsalekha <hamsalekha.s@ittiam.com>
|
||||
Shimon Doodkin <helpmepro1@gmail.com>
|
||||
Shunyao Li <shunyaoli@google.com>
|
||||
SmilingWolf <lupo996@gmail.com>
|
||||
Soo-Chul Han <shan@vidyo.com>
|
||||
Stanislav Vitvitskyy <vitvitskyy@google.com>
|
||||
Stefan Holmer <holmer@google.com>
|
||||
Steinar Midtskogen <stemidts@cisco.com>
|
||||
Suman Sunkara <sunkaras@google.com>
|
||||
susannad <susannad@google.com>
|
||||
Taekhyun Kim <takim@nvidia.com>
|
||||
Takanori MATSUURA <t.matsuu@gmail.com>
|
||||
Tamar Levy <tamar.levy@intel.com>
|
||||
Tao Bai <michaelbai@chromium.org>
|
||||
Tarek AMARA <amatarek@justin.tv>
|
||||
Tarundeep Singh <tarundeep.singh@ittiam.com>
|
||||
Tero Rintaluoma <teror@google.com>
|
||||
Thijs Vermeir <thijsvermeir@gmail.com>
|
||||
Thomas Daede <tdaede@mozilla.com>
|
||||
Thomas Davies Thomas <thdavies@cisco.com>
|
||||
Tim Kopp <tkopp@google.com>
|
||||
Timothy B. Terriberry <tterribe@xiph.org>
|
||||
Timo Witte <timo.witte@gmail.com>
|
||||
Todd Nguyen <toddnguyen@google.com>
|
||||
Tom Anderson <thomasanderson@google.com>
|
||||
Tom Finegan <tomfinegan@google.com>
|
||||
Tristan Matthews <tmatth@videolan.org>
|
||||
Umang Saini <umang.saini@ittiam.com>
|
||||
Urvang Joshi <urvang@google.com>
|
||||
Venkat Sanampudi <sanampudi.venkatarao@ittiam.com>
|
||||
Victoria Zhislina <niva213@gmail.com>
|
||||
Vignesh Venkatasubramanian <vigneshv@google.com>
|
||||
Vikas Prasad <vikas.prasad@ittiam.com>
|
||||
Vincent Rabaud <vrabaud@google.com>
|
||||
Vishesh <vishesh.garg@ittiam.com>
|
||||
Vishnu Teja Manyam <vishnu.teja@ittiam.com>
|
||||
Vitalii Dziumenko <vdziumenko@luxoft.com>
|
||||
Vitalii Dziumenko <vdziumenko@luxoft.corp-partner.google.com>
|
||||
Wan-Teh Chang <wtc@google.com>
|
||||
Wei-Ting Lin <weitinglin@google.com>
|
||||
Wenyao Liu <wenyao.liu@cidana.com>
|
||||
Will Bresnahan <bill.wresnahan@gmail.com>
|
||||
Xiaoqing Zhu <xzhu@netflix.com>
|
||||
Xing Jin <ddvfinite@gmail.com>
|
||||
Xin Zhao <xinzzhao@tencent.com>
|
||||
Yannis Guyon <yguyon@google.com>
|
||||
Yaowu Xu <yaowu@google.com>
|
||||
Yeqing Wu <yeqing_wu@apple.com>
|
||||
Yi Luo <luoyi@google.com>
|
||||
Yongzhe Wang <yongzhe@google.com>
|
||||
Yue Chen <yuec@google.com>
|
||||
Yunqing Wang <yunqingwang@google.com>
|
||||
Yury Gitman <yuryg@google.com>
|
||||
Yushin Cho <ycho@mozilla.com>
|
||||
Zhijie Yang <zhijie.yang@broadcom.com>
|
||||
Zhipin Deng <zhipin.deng@intel.com>
|
||||
Zoe Liu <zoeliu@gmail.com>
|
||||
@@ -1,459 +0,0 @@
|
||||
2022-06-17 v3.4.0
|
||||
This release includes compression efficiency and perceptual quality
|
||||
improvements, speedup and memory optimizations, and some new features.
|
||||
There are no ABI or API breaking changes in this release.
|
||||
|
||||
- New Features
|
||||
* New --dist-metric flag with "qm-psnr" value to use quantization
|
||||
matrices in the distortion computation for RD search. The default
|
||||
value is "psnr".
|
||||
* New command line option "--auto-intra-tools-off=1" to make
|
||||
all-intra encoding faster for high bit rate under
|
||||
"--deltaq-mode=3" mode.
|
||||
* New rate control library aom_av1_rc for real-time hardware
|
||||
encoders. Supports CBR for both one spatial layer and SVC.
|
||||
* New image format AOM_IMG_FMT_NV12 can be used as input to the
|
||||
encoder. The presence of AOM_IMG_FMT_NV12 can be detected at
|
||||
compile time by checking if the macro AOM_HAVE_IMG_FMT_NV12 is
|
||||
defined.
|
||||
* New codec controls for the encoder:
|
||||
o AV1E_SET_AUTO_INTRA_TOOLS_OFF. Only in effect if
|
||||
--deltaq-mode=3.
|
||||
o AV1E_SET_RTC_EXTERNAL_RC
|
||||
o AV1E_SET_FP_MT. Only supported if libaom is built with
|
||||
-DCONFIG_FRAME_PARALLEL_ENCODE=1.
|
||||
o AV1E_GET_TARGET_SEQ_LEVEL_IDX
|
||||
* New key-value pairs for the key-value API:
|
||||
o --auto-intra-tools-off=0 (default) or 1. Only in effect if
|
||||
--deltaq-mode=3.
|
||||
o --strict-level-conformance=0 (default) or 1
|
||||
o --fp-mt=0 (default) or 1. Only supported if libaom is built
|
||||
with -DCONFIG_FRAME_PARALLEL_ENCODE=1.
|
||||
* New aomenc options (not supported by the key-value API):
|
||||
o --nv12
|
||||
|
||||
- Compression Efficiency Improvements
|
||||
* Correctly calculate SSE for high bitdepth in skip mode, 0.2% to
|
||||
0.6% coding gain.
|
||||
* RTC at speed 9/10: BD-rate gain of ~4/5%
|
||||
* RTC screen content coding: many improvements for real-time screen
|
||||
at speed 10 (quality, speedup, and rate control), up to high
|
||||
resolutions (1080p).
|
||||
* RTC-SVC: fixes to make intra-only frames work for spatial layers.
|
||||
* RTC-SVC: quality improvements for temporal layers.
|
||||
* AV1 RT: A new passive rate control strategy for screen content, an
|
||||
average of 7.5% coding gain, with some clips of 20+%. The feature
|
||||
is turned off by default due to higher bit rate variation.
|
||||
|
||||
- Perceptual Quality Improvements
|
||||
* RTC: Visual quality improvements for high speeds (9/10)
|
||||
* Improvements in coding quality for all intra mode
|
||||
|
||||
- Speedup and Memory Optimizations
|
||||
* ~10% speedup in good quality mode encoding.
|
||||
* ~7% heap memory reduction in good quality encoding mode for speed
|
||||
5 and 6.
|
||||
* Ongoing improvements to intra-frame encoding performance on Arm
|
||||
* Faster encoding speed for "--deltaq-mode=3" mode.
|
||||
* ~10% speedup for speed 5/6, ~15% speedup for speed 7/8, and
|
||||
~10% speedup for speed 9/10 in real time encoding mode
|
||||
* ~20% heap memory reduction in still-picture encoding mode for
|
||||
360p-720p resolutions with multiple threads
|
||||
* ~13% speedup for speed 6 and ~12% speedup for speed 9 in
|
||||
still-picture encoding mode.
|
||||
* Optimizations to improve multi-thread efficiency for still-picture
|
||||
encoding mode.
|
||||
|
||||
- Bug Fixes
|
||||
* b/204460717: README.md: replace master with main
|
||||
* b/210677928: libaom disable_order is surprising for
|
||||
max_reference_frames=3
|
||||
* b/222461449: -DCONFIG_TUNE_BUTTERAUGLI=1 broken
|
||||
* b/227207606: write_greyscale writes incorrect chroma in highbd
|
||||
mode
|
||||
* b/229955363: Integer-overflow in linsolve_wiener
|
||||
* https://crbug.com/aomedia/2032
|
||||
* https://crbug.com/aomedia/2397
|
||||
* https://crbug.com/aomedia/2563
|
||||
* https://crbug.com/aomedia/2815
|
||||
* https://crbug.com/aomedia/3009
|
||||
* https://crbug.com/aomedia/3018
|
||||
* https://crbug.com/aomedia/3045
|
||||
* https://crbug.com/aomedia/3101
|
||||
* https://crbug.com/aomedia/3130
|
||||
* https://crbug.com/aomedia/3173
|
||||
* https://crbug.com/aomedia/3184
|
||||
* https://crbug.com/aomedia/3187
|
||||
* https://crbug.com/aomedia/3190
|
||||
* https://crbug.com/aomedia/3195
|
||||
* https://crbug.com/aomedia/3197
|
||||
* https://crbug.com/aomedia/3201
|
||||
* https://crbug.com/aomedia/3202
|
||||
* https://crbug.com/aomedia/3204
|
||||
* https://crbug.com/aomedia/3205
|
||||
* https://crbug.com/aomedia/3207
|
||||
* https://crbug.com/aomedia/3208
|
||||
* https://crbug.com/aomedia/3209
|
||||
* https://crbug.com/aomedia/3213
|
||||
* https://crbug.com/aomedia/3214
|
||||
* https://crbug.com/aomedia/3219
|
||||
* https://crbug.com/aomedia/3222
|
||||
* https://crbug.com/aomedia/3223
|
||||
* https://crbug.com/aomedia/3225
|
||||
* https://crbug.com/aomedia/3226
|
||||
* https://crbug.com/aomedia/3228
|
||||
* https://crbug.com/aomedia/3232
|
||||
* https://crbug.com/aomedia/3236
|
||||
* https://crbug.com/aomedia/3237
|
||||
* https://crbug.com/aomedia/3238
|
||||
* https://crbug.com/aomedia/3240
|
||||
* https://crbug.com/aomedia/3243
|
||||
* https://crbug.com/aomedia/3244
|
||||
* https://crbug.com/aomedia/3246
|
||||
* https://crbug.com/aomedia/3248
|
||||
* https://crbug.com/aomedia/3250
|
||||
* https://crbug.com/aomedia/3251
|
||||
* https://crbug.com/aomedia/3252
|
||||
* https://crbug.com/aomedia/3255
|
||||
* https://crbug.com/aomedia/3257
|
||||
* https://crbug.com/aomedia/3259
|
||||
* https://crbug.com/aomedia/3260
|
||||
* https://crbug.com/aomedia/3267
|
||||
* https://crbug.com/aomedia/3268
|
||||
* https://crbug.com/aomedia/3269
|
||||
* https://crbug.com/aomedia/3276
|
||||
* https://crbug.com/aomedia/3278
|
||||
* https://crbug.com/chromium/1290068
|
||||
* https://crbug.com/chromium/1303237
|
||||
* https://crbug.com/chromium/1304990
|
||||
* https://crbug.com/chromium/1321141
|
||||
* https://crbug.com/chromium/1321388
|
||||
* https://crbug.com/oss-fuzz/44846
|
||||
* https://crbug.com/oss-fuzz/44856
|
||||
* https://crbug.com/oss-fuzz/44862
|
||||
* https://crbug.com/oss-fuzz/44904
|
||||
* https://crbug.com/oss-fuzz/45056
|
||||
|
||||
2022-01-28 v3.3.0
|
||||
This release includes compression efficiency and perceptual quality
|
||||
improvements, speedup and memory optimizations, some new features, and
|
||||
several bug fixes.
|
||||
|
||||
- New Features
|
||||
* AV1 RT: Introducing CDEF search level 5
|
||||
* Changed real time speed 4 to behave the same as real time speed 5
|
||||
* Add --deltaq-strength
|
||||
* rtc: Allow scene-change and overshoot detection for svc
|
||||
* rtc: Intra-only frame for svc
|
||||
* AV1 RT: Option 2 for codec control AV1E_SET_ENABLE_CDEF to disable
|
||||
CDEF on non-ref frames
|
||||
* New codec controls AV1E_SET_LOOPFILTER_CONTROL and
|
||||
AOME_GET_LOOPFILTER_LEVEL
|
||||
* Improvements to three pass encoding
|
||||
|
||||
- Compression Efficiency Improvements
|
||||
* Overall compression gains: 0.6%
|
||||
|
||||
- Perceptual Quality Improvements
|
||||
* Improves the perceptual quality of high QP encoding for delta-q mode 4
|
||||
* Auto select noise synthesis level for all intra
|
||||
|
||||
- Speedup and Memory Optimizations
|
||||
* Added many SSE2 optimizations.
|
||||
* Good quality 2-pass encoder speedups:
|
||||
o Speed 2: 9%
|
||||
o Speed 3: 12.5%
|
||||
o Speed 4: 8%
|
||||
o Speed 5: 3%
|
||||
o Speed 6: 4%
|
||||
* Real time mode encoder speedups:
|
||||
o Speed 5: 2.6% BDRate gain, 4% speedup
|
||||
o Speed 6: 3.5% BDRate gain, 4% speedup
|
||||
o Speed 9: 1% BDRate gain, 3% speedup
|
||||
o Speed 10: 3% BDRate gain, neutral speedup
|
||||
* All intra encoding speedups (AVIF):
|
||||
o Single thread - speed 6: 8%
|
||||
o Single thread - speed 9: 15%
|
||||
o Multi thread(8) - speed 6: 14%
|
||||
o Multi thread(8) - speed 9: 34%
|
||||
|
||||
- Bug Fixes
|
||||
* Issue 3163: Segmentation fault when using --enable-keyframe-filtering=2
|
||||
* Issue 2436: Integer overflow in av1_warp_affine_c()
|
||||
* Issue 3226: armv7 build failure due to gcc-11
|
||||
* Issue 3195: Bug report on libaom (AddressSanitizer: heap-buffer-overflow)
|
||||
* Issue 3191: Bug report on libaom (AddressSanitizer: SEGV on unknown
|
||||
address)
|
||||
* Issue 3176: Some SSE2/SADx4AvgTest.* tests fail on Windows
|
||||
* Issue 3175: Some SSE2/SADSkipTest.* tests fail on Windows
|
||||
|
||||
2021-10-13 v3.2.0
|
||||
This release includes compression efficiency and perceptual quality
|
||||
improvements, speedup and memory optimizations, as well as some new
|
||||
features.
|
||||
|
||||
- New Features
|
||||
* Introduced speeds 7, 8, and 9 for all intra mode.
|
||||
* Introduced speed 10 for real time mode.
|
||||
* Introduced an API that allows external partition decisions.
|
||||
* SVC: added support for compound prediction.
|
||||
* SVC: added support for fixed SVC modes.
|
||||
|
||||
- Compression Efficiency Improvements
|
||||
* Intra-mode search improvement.
|
||||
* Improved real time (RT) mode BDrate savings by ~5% (RT speed 5)
|
||||
and ~12% (RT speed 6). The improvement was measured on the video
|
||||
conference set.
|
||||
* Improved real time mode for nonrd path (speed 7, 8, 9): BDrate
|
||||
gains of ~3-5%.
|
||||
* Rate control and RD adjustments based on ML research in VP9.
|
||||
Gains of ~0.5-1.0% for HD.
|
||||
|
||||
- Perceptual Quality Improvements
|
||||
* Added a new mode --deltaq-mode=3 to improve perceptual quality
|
||||
based on a differential contrast model for still images.
|
||||
* Added a new mode –deltaq-mode=4 to improve perceptual quality
|
||||
based on user rated cq_level data set for still images.
|
||||
* Weighting of some intra mode and partition size choices to better
|
||||
manage and retain texture.
|
||||
|
||||
- Speedup and Memory Optimizations
|
||||
* Further improved 2-pass good quality encoder speed:
|
||||
o Speed 2 speedup: 18%
|
||||
o Speed 3 speedup: 22%
|
||||
o Speed 4 speedup: 37%
|
||||
o Speed 5 speedup: 30%
|
||||
o Speed 6 speedup: 20%
|
||||
* Optimized the real time encoder (measured on the video conference
|
||||
set):
|
||||
o RT speed 5 speedup: 110%
|
||||
o RT speed 6 speedup: 77%
|
||||
|
||||
- Bug Fixes
|
||||
* Issue 3069: Fix one-pass mode keyframe placement off-by-one error.
|
||||
* Issue 3156: Fix a bug in av1_quantize_lp AVX2 optimization.
|
||||
|
||||
2021-09-29 v3.1.3
|
||||
This release includes several bug fixes.
|
||||
|
||||
- Bug fixes:
|
||||
The following four cmake changes should help the people building
|
||||
libaom using MSVC.
|
||||
1. exports: use CMAKE_SHARED_LIBRARY_PREFIX to determine lib name
|
||||
https://aomedia-review.googlesource.com/c/aom/+/142342
|
||||
2. aom_install: Install lib dlls to bindir
|
||||
https://aomedia-review.googlesource.com/c/aom/+/146546
|
||||
3. aom_install: use relpath for install
|
||||
https://aomedia-review.googlesource.com/c/aom/+/146550
|
||||
4. aom_install: don't exclude msvc from install
|
||||
https://aomedia-review.googlesource.com/c/aom/+/146547
|
||||
|
||||
aom/aom_encoder.h: remove configure option reference
|
||||
https://aomedia-review.googlesource.com/c/aom/+/146743
|
||||
|
||||
Issue 3113: Tests for detecting chroma subsampling in
|
||||
av1_copy_and_extend_frame() do not work when y_width or y_height is
|
||||
1
|
||||
|
||||
Issue 3115: image2yuvconfig() should calculate uv_crop_width and
|
||||
uv_crop_height from y_crop_width and y_crop_height
|
||||
|
||||
Issue 3140: rc_overshoot_pct is documented as having a range of
|
||||
0-1000, but is range checked against 0-100
|
||||
|
||||
Issue 3147: Build failure on Apple M1 arm64
|
||||
|
||||
2021-07-20 v3.1.2
|
||||
This release includes several bug fixes.
|
||||
|
||||
- Bug fixes:
|
||||
exports.cmake: use APPLE and WIN32 and use def for mingw-w64
|
||||
https://aomedia-review.googlesource.com/c/aom/+/139882
|
||||
|
||||
Issue 2993: Incorrect spatial_id when decoding base layer of
|
||||
multi-layer stream
|
||||
|
||||
Issue 3080: Chroma Resampling by Encoder on Y4M Inputs Files Tagged
|
||||
as C420mpeg2
|
||||
|
||||
Issue 3081: Use of uninitialized value $version_extra in
|
||||
concatenation (.) or string at aom/build/cmake/version.pl line 88.
|
||||
|
||||
2021-06-08 v3.1.1
|
||||
This release includes several bug fixes.
|
||||
|
||||
- Bug fixes:
|
||||
Issue 2965: Cherry-picked the following four commits for the
|
||||
tune=butteraugli mode.
|
||||
1. Add libjxl to pkg_config if enabled:
|
||||
https://aomedia-review.googlesource.com/c/aom/+/136044
|
||||
2. Declare set_mb_butteraugli_rdmult_scaling static:
|
||||
https://aomedia-review.googlesource.com/c/aom/+/134506
|
||||
3. Add color range detection in tune=butteraugli mode:
|
||||
https://aomedia-review.googlesource.com/c/aom/+/135521
|
||||
4. Enable tune=butteraugli in all-intra mode:
|
||||
https://aomedia-review.googlesource.com/c/aom/+/136082
|
||||
|
||||
Issue 3021: Fix vmaf model initialization error when not set to
|
||||
tune=vmaf
|
||||
|
||||
Issue 3050: Compilation fails with -DCONFIG_TUNE_VMAF=1
|
||||
|
||||
Issue 3054: Consistent crash on near-static screen content, keyframe
|
||||
related
|
||||
|
||||
2021-05-03 v3.1.0
|
||||
This release adds an "all intra" mode to the encoder, which significantly
|
||||
speeds up the encoding of AVIF still images at speed 6.
|
||||
|
||||
- Upgrading:
|
||||
All intra mode for encoding AVIF still images and AV1 all intra videos:
|
||||
AOM_USAGE_ALL_INTRA (2) can be passed as the 'usage' argument to
|
||||
aom_codec_enc_config_default().
|
||||
|
||||
New encoder control IDs added:
|
||||
- AV1E_SET_ENABLE_DIAGONAL_INTRA: Enable diagonal (D45 to D203) intra
|
||||
prediction modes (0: false, 1: true (default)). Also available as
|
||||
"enable-diagonal-intra" for the aom_codec_set_option() function.
|
||||
|
||||
New aom_tune_metric enum value: AOM_TUNE_BUTTERAUGLI. The new aomenc option
|
||||
--tune=butteraugli was added to optimize the encoder’s perceptual quality by
|
||||
optimizing the Butteraugli metric. Install libjxl (JPEG XL) and then pass
|
||||
-DCONFIG_TUNE_BUTTERAUGLI=1 to the cmake command to enable it.
|
||||
|
||||
Addition of support for libvmaf 2.x.
|
||||
|
||||
- Enhancements:
|
||||
Heap memory consumption for encoding AVIF still images is significantly
|
||||
reduced.
|
||||
|
||||
- Bug fixes:
|
||||
Issue 2601: third_party/libaom fails licensecheck
|
||||
|
||||
Issue 2950: Conditional expression for rc->this_key_frame_forced is always
|
||||
true in find_next_key_frame()
|
||||
|
||||
Issue 2988: "make install" installs the aom.h header twice
|
||||
|
||||
Issue 2992: Incorrectly printing the temporal_id twice in dump_obu tool
|
||||
|
||||
Issue 2998:
|
||||
|
||||
Issue 2999:
|
||||
|
||||
Issue 3000:
|
||||
|
||||
2021-02-24 v3.0.0
|
||||
This release includes compression efficiency improvement, speed improvement
|
||||
for realtime mode, as well as some new APIs.
|
||||
|
||||
- Upgrading:
|
||||
Support for PSNR calculation based on stream bit-depth.
|
||||
|
||||
New encoder control IDs added:
|
||||
- AV1E_SET_ENABLE_RECT_TX
|
||||
- AV1E_SET_VBR_CORPUS_COMPLEXITY_LAP
|
||||
- AV1E_GET_BASELINE_GF_INTERVAL
|
||||
- AV1E_SET_ENABLE_DNL_DENOISING
|
||||
|
||||
New decoder control IDs added:
|
||||
- AOMD_GET_FWD_KF_PRESENT
|
||||
- AOMD_GET_FRAME_FLAGS
|
||||
- AOMD_GET_ALTREF_PRESENT
|
||||
- AOMD_GET_TILE_INFO
|
||||
- AOMD_GET_SCREEN_CONTENT_TOOLS_INFO
|
||||
- AOMD_GET_STILL_PICTURE
|
||||
- AOMD_GET_SB_SIZE
|
||||
- AOMD_GET_SHOW_EXISTING_FRAME_FLAG
|
||||
- AOMD_GET_S_FRAME_INFO
|
||||
|
||||
New aom_tune_content enum value: AOM_CONTENT_FILM
|
||||
|
||||
New aom_tune_metric enum value: AOM_TUNE_VMAF_NEG_MAX_GAIN
|
||||
|
||||
Coefficient and mode update can be turned off via
|
||||
AV1E_SET_{COEFF/MODE}_COST_UPD_FREQ.
|
||||
|
||||
New key & value API added, available with aom_codec_set_option() function.
|
||||
|
||||
Scaling API expanded to include 1/4, 3/4 and 1/8.
|
||||
|
||||
- Enhancements:
|
||||
Better multithreading performance with realtime mode.
|
||||
|
||||
New speed 9 setting for faster realtime encoding.
|
||||
|
||||
Smaller binary size with low bitdepth and realtime only build.
|
||||
|
||||
Temporal denoiser and its optimizations on x86 and Neon.
|
||||
|
||||
Optimizations for scaling.
|
||||
|
||||
Faster encoding with speed settings 2 to 6 for good encoding mode.
|
||||
|
||||
Improved documentation throughout the library, with function level
|
||||
documentation, tree view and support for the dot tool.
|
||||
|
||||
- Bug fixes:
|
||||
Aside from those mentioned in v2.0.1 and v2.0.2, this release includes the
|
||||
following bug fixes:
|
||||
|
||||
Issue 2940: Segfault when encoding with --use-16bit-internal and --limit > 1
|
||||
|
||||
Issue 2941: Decoder mismatch with --rt --bit-depth=10 and --cpu-used=8
|
||||
|
||||
Issue 2895: mingw-w64 i686 gcc fails to build
|
||||
|
||||
Issue 2874: Separate ssse3 functions from sse2 file.
|
||||
|
||||
2021-02-09 v2.0.2
|
||||
This release includes several bug fixes.
|
||||
|
||||
- Bug fixes:
|
||||
Issue 2643: Modify the assertion in temporal filter intrinsics.
|
||||
|
||||
Issue 2648: Fix unit test ThreadTestLarge.EncoderResultTest/49
|
||||
assertion failure.
|
||||
|
||||
Issue 2869: Add -Wimplicit-function-declaration as C flag only.
|
||||
|
||||
Issue 2878: Avoid memset in the av1_filter_intra_predictor module
|
||||
functions.
|
||||
|
||||
Issue 2903: Fix a typo bug in apply_temporal_filter_planewise.
|
||||
|
||||
Call av1_setup_frame_size() when dropping a frame in the
|
||||
encode_frame_to_data_rate() function in av1/encoder/encoder.c.
|
||||
|
||||
2020-11-25 v2.0.1
|
||||
This release includes two bug fixes.
|
||||
|
||||
- Bug fixes:
|
||||
Issue 2723: Fix crash in chroma_check() when generating a monochrome
|
||||
encoded stream in real-time mode.
|
||||
|
||||
Issue 2833: Fix crash on some input when reduced still picture header is
|
||||
used in real-time mode and speed >=7.
|
||||
|
||||
2020-05-07 v2.0.0 "Applejack"
|
||||
First official release of libaom.
|
||||
This release includes new real-time mode and SVC support.
|
||||
|
||||
- Upgrading:
|
||||
AOM_SET_POSTPROC, AOM_CODEC_CAP_POSTPROC and AOM_CODEC_USE_POSTPROC are
|
||||
removed.
|
||||
|
||||
AOM_SET_DBG_* is removed.
|
||||
|
||||
Multi-resolution encoding is removed.
|
||||
|
||||
put_frame and put_slice callbacks are removed.
|
||||
|
||||
- Enhancements:
|
||||
Full-sweep document update for codec controls.
|
||||
|
||||
2018-06-28 v1.0.0
|
||||
AOMedia Codec Workgroup Approved version 1.0
|
||||
|
||||
2016-04-07 v0.1.0 "AOMedia Codec 1"
|
||||
This release is the first Alliance for Open Media codec.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,27 +0,0 @@
|
||||
Copyright (c) 2016, Alliance for Open Media. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
@@ -1,108 +0,0 @@
|
||||
Alliance for Open Media Patent License 1.0
|
||||
|
||||
1. License Terms.
|
||||
|
||||
1.1. Patent License. Subject to the terms and conditions of this License, each
|
||||
Licensor, on behalf of itself and successors in interest and assigns,
|
||||
grants Licensee a non-sublicensable, perpetual, worldwide, non-exclusive,
|
||||
no-charge, royalty-free, irrevocable (except as expressly stated in this
|
||||
License) patent license to its Necessary Claims to make, use, sell, offer
|
||||
for sale, import or distribute any Implementation.
|
||||
|
||||
1.2. Conditions.
|
||||
|
||||
1.2.1. Availability. As a condition to the grant of rights to Licensee to make,
|
||||
sell, offer for sale, import or distribute an Implementation under
|
||||
Section 1.1, Licensee must make its Necessary Claims available under
|
||||
this License, and must reproduce this License with any Implementation
|
||||
as follows:
|
||||
|
||||
a. For distribution in source code, by including this License in the
|
||||
root directory of the source code with its Implementation.
|
||||
|
||||
b. For distribution in any other form (including binary, object form,
|
||||
and/or hardware description code (e.g., HDL, RTL, Gate Level Netlist,
|
||||
GDSII, etc.)), by including this License in the documentation, legal
|
||||
notices, and/or other written materials provided with the
|
||||
Implementation.
|
||||
|
||||
1.2.2. Additional Conditions. This license is directly from Licensor to
|
||||
Licensee. Licensee acknowledges as a condition of benefiting from it
|
||||
that no rights from Licensor are received from suppliers, distributors,
|
||||
or otherwise in connection with this License.
|
||||
|
||||
1.3. Defensive Termination. If any Licensee, its Affiliates, or its agents
|
||||
initiates patent litigation or files, maintains, or voluntarily
|
||||
participates in a lawsuit against another entity or any person asserting
|
||||
that any Implementation infringes Necessary Claims, any patent licenses
|
||||
granted under this License directly to the Licensee are immediately
|
||||
terminated as of the date of the initiation of action unless 1) that suit
|
||||
was in response to a corresponding suit regarding an Implementation first
|
||||
brought against an initiating entity, or 2) that suit was brought to
|
||||
enforce the terms of this License (including intervention in a third-party
|
||||
action by a Licensee).
|
||||
|
||||
1.4. Disclaimers. The Reference Implementation and Specification are provided
|
||||
"AS IS" and without warranty. The entire risk as to implementing or
|
||||
otherwise using the Reference Implementation or Specification is assumed
|
||||
by the implementer and user. Licensor expressly disclaims any warranties
|
||||
(express, implied, or otherwise), including implied warranties of
|
||||
merchantability, non-infringement, fitness for a particular purpose, or
|
||||
title, related to the material. IN NO EVENT WILL LICENSOR BE LIABLE TO
|
||||
ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL,
|
||||
INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF
|
||||
ACTION OF ANY KIND WITH RESPECT TO THIS LICENSE, WHETHER BASED ON BREACH
|
||||
OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR
|
||||
NOT THE OTHER PARTRY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
2. Definitions.
|
||||
|
||||
2.1. Affiliate. "Affiliate" means an entity that directly or indirectly
|
||||
Controls, is Controlled by, or is under common Control of that party.
|
||||
|
||||
2.2. Control. "Control" means direct or indirect control of more than 50% of
|
||||
the voting power to elect directors of that corporation, or for any other
|
||||
entity, the power to direct management of such entity.
|
||||
|
||||
2.3. Decoder. "Decoder" means any decoder that conforms fully with all
|
||||
non-optional portions of the Specification.
|
||||
|
||||
2.4. Encoder. "Encoder" means any encoder that produces a bitstream that can
|
||||
be decoded by a Decoder only to the extent it produces such a bitstream.
|
||||
|
||||
2.5. Final Deliverable. "Final Deliverable" means the final version of a
|
||||
deliverable approved by the Alliance for Open Media as a Final
|
||||
Deliverable.
|
||||
|
||||
2.6. Implementation. "Implementation" means any implementation, including the
|
||||
Reference Implementation, that is an Encoder and/or a Decoder. An
|
||||
Implementation also includes components of an Implementation only to the
|
||||
extent they are used as part of an Implementation.
|
||||
|
||||
2.7. License. "License" means this license.
|
||||
|
||||
2.8. Licensee. "Licensee" means any person or entity who exercises patent
|
||||
rights granted under this License.
|
||||
|
||||
2.9. Licensor. "Licensor" means (i) any Licensee that makes, sells, offers
|
||||
for sale, imports or distributes any Implementation, or (ii) a person
|
||||
or entity that has a licensing obligation to the Implementation as a
|
||||
result of its membership and/or participation in the Alliance for Open
|
||||
Media working group that developed the Specification.
|
||||
|
||||
2.10. Necessary Claims. "Necessary Claims" means all claims of patents or
|
||||
patent applications, (a) that currently or at any time in the future,
|
||||
are owned or controlled by the Licensor, and (b) (i) would be an
|
||||
Essential Claim as defined by the W3C Policy as of February 5, 2004
|
||||
(https://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential)
|
||||
as if the Specification was a W3C Recommendation; or (ii) are infringed
|
||||
by the Reference Implementation.
|
||||
|
||||
2.11. Reference Implementation. "Reference Implementation" means an Encoder
|
||||
and/or Decoder released by the Alliance for Open Media as a Final
|
||||
Deliverable.
|
||||
|
||||
2.12. Specification. "Specification" means the specification designated by
|
||||
the Alliance for Open Media as a Final Deliverable for which this
|
||||
License was issued.
|
||||
|
||||
@@ -1,670 +0,0 @@
|
||||
README.md {#LREADME}
|
||||
=========
|
||||
# AV1 Codec Library
|
||||
|
||||
## Contents
|
||||
1. [Building the lib and applications](#building-the-library-and-applications)
|
||||
- [Prerequisites](#prerequisites)
|
||||
- [Get the code](#get-the-code)
|
||||
- [Basics](#basic-build)
|
||||
- [Configuration options](#configuration-options)
|
||||
- [Dylib builds](#dylib-builds)
|
||||
- [Debugging](#debugging)
|
||||
- [Cross compiling](#cross-compiling)
|
||||
- [Sanitizer support](#sanitizers)
|
||||
- [MSVC builds](#microsoft-visual-studio-builds)
|
||||
- [Xcode builds](#xcode-builds)
|
||||
- [Emscripten builds](#emscripten-builds)
|
||||
- [Extra Build Flags](#extra-build-flags)
|
||||
- [Build with VMAF support](#build-with-vmaf)
|
||||
2. [Testing the library](#testing-the-av1-codec)
|
||||
- [Basics](#testing-basics)
|
||||
- [Unit tests](#1_unit-tests)
|
||||
- [Example tests](#2_example-tests)
|
||||
- [Encoder tests](#3_encoder-tests)
|
||||
- [IDE hosted tests](#ide-hosted-tests)
|
||||
- [Downloading test data](#downloading-the-test-data)
|
||||
- [Adding a new test data file](#adding-a-new-test-data-file)
|
||||
- [Additional test data](#additional-test-data)
|
||||
- [Sharded testing](#sharded-testing)
|
||||
- [Running tests directly](#1_running-test_libaom-directly)
|
||||
- [Running tests via CMake](#2_running-the-tests-via-the-cmake-build)
|
||||
3. [Coding style](#coding-style)
|
||||
4. [Submitting patches](#submitting-patches)
|
||||
- [Login cookie](#login-cookie)
|
||||
- [Contributor agreement](#contributor-agreement)
|
||||
- [Testing your code](#testing-your-code)
|
||||
- [Commit message hook](#commit-message-hook)
|
||||
- [Upload your change](#upload-your-change)
|
||||
- [Incorporating Reviewer Comments](#incorporating-reviewer-comments)
|
||||
- [Submitting your change](#submitting-your-change)
|
||||
- [Viewing change status](#viewing-the-status-of-uploaded-changes)
|
||||
5. [Support](#support)
|
||||
6. [Bug reports](#bug-reports)
|
||||
|
||||
## Building the library and applications {#building-the-library-and-applications}
|
||||
|
||||
### Prerequisites {#prerequisites}
|
||||
|
||||
1. [CMake](https://cmake.org). See CMakeLists.txt for the minimum version
|
||||
required.
|
||||
2. [Git](https://git-scm.com/).
|
||||
3. [Perl](https://www.perl.org/).
|
||||
4. For x86 targets, [yasm](http://yasm.tortall.net/), which is preferred, or a
|
||||
recent version of [nasm](http://www.nasm.us/). If you download yasm with
|
||||
the intention to work with Visual Studio, please download win32.exe or
|
||||
win64.exe and rename it into yasm.exe. DO NOT download or use vsyasm.exe.
|
||||
5. Building the documentation requires
|
||||
[doxygen version 1.8.10 or newer](http://doxygen.org).
|
||||
6. Emscripten builds require the portable
|
||||
[EMSDK](https://kripken.github.io/emscripten-site/index.html).
|
||||
|
||||
### Get the code {#get-the-code}
|
||||
|
||||
The AV1 library source code is stored in the Alliance for Open Media Git
|
||||
repository:
|
||||
|
||||
~~~
|
||||
$ git clone https://aomedia.googlesource.com/aom
|
||||
# By default, the above command stores the source in the aom directory:
|
||||
$ cd aom
|
||||
~~~
|
||||
|
||||
### Basic build {#basic-build}
|
||||
|
||||
CMake replaces the configure step typical of many projects. Running CMake will
|
||||
produce configuration and build files for the currently selected CMake
|
||||
generator. For most systems the default generator is Unix Makefiles. The basic
|
||||
form of a makefile build is the following:
|
||||
|
||||
~~~
|
||||
$ cmake path/to/aom
|
||||
$ make
|
||||
~~~
|
||||
|
||||
The above will generate a makefile build that produces the AV1 library and
|
||||
applications for the current host system after the make step completes
|
||||
successfully. The compiler chosen varies by host platform, but a general rule
|
||||
applies: On systems where cc and c++ are present in $PATH at the time CMake is
|
||||
run the generated build will use cc and c++ by default.
|
||||
|
||||
### Configuration options {#configuration-options}
|
||||
|
||||
The AV1 codec library has a great many configuration options. These come in two
|
||||
varieties:
|
||||
|
||||
1. Build system configuration options. These have the form `ENABLE_FEATURE`.
|
||||
2. AV1 codec configuration options. These have the form `CONFIG_FEATURE`.
|
||||
|
||||
Both types of options are set at the time CMake is run. The following example
|
||||
enables ccache and disables the AV1 encoder:
|
||||
|
||||
~~~
|
||||
$ cmake path/to/aom -DENABLE_CCACHE=1 -DCONFIG_AV1_ENCODER=0
|
||||
$ make
|
||||
~~~
|
||||
|
||||
The available configuration options are too numerous to list here. Build system
|
||||
configuration options can be found at the top of the CMakeLists.txt file found
|
||||
in the root of the AV1 repository, and AV1 codec configuration options can
|
||||
currently be found in the file `build/cmake/aom_config_defaults.cmake`.
|
||||
|
||||
### Dylib builds {#dylib-builds}
|
||||
|
||||
A dylib (shared object) build of the AV1 codec library can be enabled via the
|
||||
CMake built in variable `BUILD_SHARED_LIBS`:
|
||||
|
||||
~~~
|
||||
$ cmake path/to/aom -DBUILD_SHARED_LIBS=1
|
||||
$ make
|
||||
~~~
|
||||
|
||||
This is currently only supported on non-Windows targets.
|
||||
|
||||
### Debugging {#debugging}
|
||||
|
||||
Depending on the generator used there are multiple ways of going about
|
||||
debugging AV1 components. For single configuration generators like the Unix
|
||||
Makefiles generator, setting `CMAKE_BUILD_TYPE` to Debug is sufficient:
|
||||
|
||||
~~~
|
||||
$ cmake path/to/aom -DCMAKE_BUILD_TYPE=Debug
|
||||
~~~
|
||||
|
||||
For Xcode, mainly because configuration controls for Xcode builds are buried two
|
||||
configuration windows deep and must be set for each subproject within the Xcode
|
||||
IDE individually, `CMAKE_CONFIGURATION_TYPES` should be set to Debug:
|
||||
|
||||
~~~
|
||||
$ cmake path/to/aom -G Xcode -DCMAKE_CONFIGURATION_TYPES=Debug
|
||||
~~~
|
||||
|
||||
For Visual Studio the in-IDE configuration controls should be used. Simply set
|
||||
the IDE project configuration to Debug to allow for stepping through the code.
|
||||
|
||||
In addition to the above it can sometimes be useful to debug only C and C++
|
||||
code. To disable all assembly code and intrinsics set `AOM_TARGET_CPU` to
|
||||
generic at generation time:
|
||||
|
||||
~~~
|
||||
$ cmake path/to/aom -DAOM_TARGET_CPU=generic
|
||||
~~~
|
||||
|
||||
### Cross compiling {#cross-compiling}
|
||||
|
||||
For the purposes of building the AV1 codec and applications and relative to the
|
||||
scope of this guide, all builds for architectures differing from the native host
|
||||
architecture will be considered cross compiles. The AV1 CMake build handles
|
||||
cross compiling via the use of toolchain files included in the AV1 repository.
|
||||
The toolchain files available at the time of this writing are:
|
||||
|
||||
- arm64-ios.cmake
|
||||
- arm64-linux-gcc.cmake
|
||||
- arm64-mingw-gcc.cmake
|
||||
- armv7-ios.cmake
|
||||
- armv7-linux-gcc.cmake
|
||||
- armv7-mingw-gcc.cmake
|
||||
- armv7s-ios.cmake
|
||||
- mips32-linux-gcc.cmake
|
||||
- mips64-linux-gcc.cmake
|
||||
- x86-ios-simulator.cmake
|
||||
- x86-linux.cmake
|
||||
- x86-macos.cmake
|
||||
- x86-mingw-gcc.cmake
|
||||
- x86\_64-ios-simulator.cmake
|
||||
- x86\_64-mingw-gcc.cmake
|
||||
|
||||
The following example demonstrates use of the x86-macos.cmake toolchain file on
|
||||
a x86\_64 MacOS host:
|
||||
|
||||
~~~
|
||||
$ cmake path/to/aom \
|
||||
-DCMAKE_TOOLCHAIN_FILE=path/to/aom/build/cmake/toolchains/x86-macos.cmake
|
||||
$ make
|
||||
~~~
|
||||
|
||||
To build for an unlisted target creation of a new toolchain file is the best
|
||||
solution. The existing toolchain files can be used a starting point for a new
|
||||
toolchain file since each one exposes the basic requirements for toolchain files
|
||||
as used in the AV1 codec build.
|
||||
|
||||
As a temporary work around an unoptimized AV1 configuration that builds only C
|
||||
and C++ sources can be produced using the following commands:
|
||||
|
||||
~~~
|
||||
$ cmake path/to/aom -DAOM_TARGET_CPU=generic
|
||||
$ make
|
||||
~~~
|
||||
|
||||
In addition to the above it's important to note that the toolchain files
|
||||
suffixed with gcc behave differently than the others. These toolchain files
|
||||
attempt to obey the $CROSS environment variable.
|
||||
|
||||
### Sanitizers {#sanitizers}
|
||||
|
||||
Sanitizer integration is built-in to the CMake build system. To enable a
|
||||
sanitizer, add `-DSANITIZE=<type>` to the CMake command line. For example, to
|
||||
enable address sanitizer:
|
||||
|
||||
~~~
|
||||
$ cmake path/to/aom -DSANITIZE=address
|
||||
$ make
|
||||
~~~
|
||||
|
||||
Sanitizers available vary by platform, target, and compiler. Consult your
|
||||
compiler documentation to determine which, if any, are available.
|
||||
|
||||
### Microsoft Visual Studio builds {#microsoft-visual-studio-builds}
|
||||
|
||||
Building the AV1 codec library in Microsoft Visual Studio is supported. Visual
|
||||
Studio 2017 (15.0) or later is required. The following example demonstrates
|
||||
generating projects and a solution for the Microsoft IDE:
|
||||
|
||||
~~~
|
||||
# This does not require a bash shell; Command Prompt (cmd.exe) is fine.
|
||||
# This assumes the build host is a Windows x64 computer.
|
||||
|
||||
# To build with Visual Studio 2019 for the x64 target:
|
||||
$ cmake path/to/aom -G "Visual Studio 16 2019"
|
||||
$ cmake --build .
|
||||
|
||||
# To build with Visual Studio 2019 for the 32-bit x86 target:
|
||||
$ cmake path/to/aom -G "Visual Studio 16 2019" -A Win32
|
||||
$ cmake --build .
|
||||
|
||||
# To build with Visual Studio 2017 for the x64 target:
|
||||
$ cmake path/to/aom -G "Visual Studio 15 2017" -T host=x64 -A x64
|
||||
$ cmake --build .
|
||||
|
||||
# To build with Visual Studio 2017 for the 32-bit x86 target:
|
||||
$ cmake path/to/aom -G "Visual Studio 15 2017" -T host=x64
|
||||
$ cmake --build .
|
||||
~~~
|
||||
|
||||
NOTE: The build system targets Windows 7 or later by compiling files with
|
||||
`-D_WIN32_WINNT=0x0601`.
|
||||
|
||||
### Xcode builds {#xcode-builds}
|
||||
|
||||
Building the AV1 codec library in Xcode is supported. The following example
|
||||
demonstrates generating an Xcode project:
|
||||
|
||||
~~~
|
||||
$ cmake path/to/aom -G Xcode
|
||||
~~~
|
||||
|
||||
### Emscripten builds {#emscripten-builds}
|
||||
|
||||
Building the AV1 codec library with Emscripten is supported. Typically this is
|
||||
used to hook into the AOMAnalyzer GUI application. These instructions focus on
|
||||
using the inspector with AOMAnalyzer, but all tools can be built with
|
||||
Emscripten.
|
||||
|
||||
It is assumed here that you have already downloaded and installed the EMSDK,
|
||||
installed and activated at least one toolchain, and setup your environment
|
||||
appropriately using the emsdk\_env script.
|
||||
|
||||
1. Build [AOM Analyzer](https://github.com/xiph/aomanalyzer).
|
||||
|
||||
2. Configure the build:
|
||||
|
||||
~~~
|
||||
$ cmake path/to/aom \
|
||||
-DENABLE_CCACHE=1 \
|
||||
-DAOM_TARGET_CPU=generic \
|
||||
-DENABLE_DOCS=0 \
|
||||
-DENABLE_TESTS=0 \
|
||||
-DCONFIG_ACCOUNTING=1 \
|
||||
-DCONFIG_INSPECTION=1 \
|
||||
-DCONFIG_MULTITHREAD=0 \
|
||||
-DCONFIG_RUNTIME_CPU_DETECT=0 \
|
||||
-DCONFIG_WEBM_IO=0 \
|
||||
-DCMAKE_TOOLCHAIN_FILE=path/to/emsdk-portable/.../Emscripten.cmake
|
||||
~~~
|
||||
|
||||
3. Build it: run make if that's your generator of choice:
|
||||
|
||||
~~~
|
||||
$ make inspect
|
||||
~~~
|
||||
|
||||
4. Run the analyzer:
|
||||
|
||||
~~~
|
||||
# inspect.js is in the examples sub directory of the directory in which you
|
||||
# executed cmake.
|
||||
$ path/to/AOMAnalyzer path/to/examples/inspect.js path/to/av1/input/file
|
||||
~~~
|
||||
|
||||
### Extra build flags {#extra-build-flags}
|
||||
|
||||
Three variables allow for passing of additional flags to the build system.
|
||||
|
||||
- AOM\_EXTRA\_C\_FLAGS
|
||||
- AOM\_EXTRA\_CXX\_FLAGS
|
||||
- AOM\_EXTRA\_EXE\_LINKER\_FLAGS
|
||||
|
||||
The build system attempts to ensure the flags passed through the above variables
|
||||
are passed to tools last in order to allow for override of default behavior.
|
||||
These flags can be used, for example, to enable asserts in a release build:
|
||||
|
||||
~~~
|
||||
$ cmake path/to/aom \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DAOM_EXTRA_C_FLAGS=-UNDEBUG \
|
||||
-DAOM_EXTRA_CXX_FLAGS=-UNDEBUG
|
||||
~~~
|
||||
|
||||
### Build with VMAF support {#build-with-vmaf}
|
||||
|
||||
After installing
|
||||
[libvmaf.a](https://github.com/Netflix/vmaf/tree/master/libvmaf),
|
||||
you can use it with the encoder:
|
||||
|
||||
~~~
|
||||
$ cmake path/to/aom -DCONFIG_TUNE_VMAF=1
|
||||
~~~
|
||||
|
||||
Please note that the default VMAF model
|
||||
("/usr/local/share/model/vmaf_v0.6.1.json")
|
||||
will be used unless you set the following flag when running the encoder:
|
||||
|
||||
~~~
|
||||
# --vmaf-model-path=path/to/model
|
||||
~~~
|
||||
|
||||
## Testing the AV1 codec {#testing-the-av1-codec}
|
||||
|
||||
### Testing basics {#testing-basics}
|
||||
|
||||
There are several methods of testing the AV1 codec. All of these methods require
|
||||
the presence of the AV1 source code and a working build of the AV1 library and
|
||||
applications.
|
||||
|
||||
#### 1. Unit tests: {#1_unit-tests}
|
||||
|
||||
The unit tests can be run at build time:
|
||||
|
||||
~~~
|
||||
# Before running the make command the LIBAOM_TEST_DATA_PATH environment
|
||||
# variable should be set to avoid downloading the test files to the
|
||||
# cmake build configuration directory.
|
||||
$ cmake path/to/aom
|
||||
# Note: The AV1 CMake build creates many test targets. Running make
|
||||
# with multiple jobs will speed up the test run significantly.
|
||||
$ make runtests
|
||||
~~~
|
||||
|
||||
#### 2. Example tests: {#2_example-tests}
|
||||
|
||||
The example tests require a bash shell and can be run in the following manner:
|
||||
|
||||
~~~
|
||||
# See the note above about LIBAOM_TEST_DATA_PATH above.
|
||||
$ cmake path/to/aom
|
||||
$ make
|
||||
# It's best to build the testdata target using many make jobs.
|
||||
# Running it like this will verify and download (if necessary)
|
||||
# one at a time, which takes a while.
|
||||
$ make testdata
|
||||
$ path/to/aom/test/examples.sh --bin-path examples
|
||||
~~~
|
||||
|
||||
#### 3. Encoder tests: {#3_encoder-tests}
|
||||
|
||||
When making a change to the encoder run encoder tests to confirm that your
|
||||
change has a positive or negligible impact on encode quality. When running these
|
||||
tests the build configuration should be changed to enable internal encoder
|
||||
statistics:
|
||||
|
||||
~~~
|
||||
$ cmake path/to/aom -DCONFIG_INTERNAL_STATS=1
|
||||
$ make
|
||||
~~~
|
||||
|
||||
The repository contains scripts intended to make running these tests as simple
|
||||
as possible. The following example demonstrates creating a set of baseline clips
|
||||
for comparison to results produced after making your change to libaom:
|
||||
|
||||
~~~
|
||||
# This will encode all Y4M files in the current directory using the
|
||||
# settings specified to create the encoder baseline statistical data:
|
||||
$ cd path/to/test/inputs
|
||||
# This command line assumes that run_encodes.sh, its helper script
|
||||
# best_encode.sh, and the aomenc you intend to test are all within a
|
||||
# directory in your PATH.
|
||||
$ run_encodes.sh 200 500 50 baseline
|
||||
~~~
|
||||
|
||||
After making your change and creating the baseline clips, you'll need to run
|
||||
encodes that include your change(s) to confirm that things are working as
|
||||
intended:
|
||||
|
||||
~~~
|
||||
# This will encode all Y4M files in the current directory using the
|
||||
# settings specified to create the statistical data for your change:
|
||||
$ cd path/to/test/inputs
|
||||
# This command line assumes that run_encodes.sh, its helper script
|
||||
# best_encode.sh, and the aomenc you intend to test are all within a
|
||||
# directory in your PATH.
|
||||
$ run_encodes.sh 200 500 50 mytweak
|
||||
~~~
|
||||
|
||||
After creating both data sets you can use `test/visual_metrics.py` to generate a
|
||||
report that can be viewed in a web browser:
|
||||
|
||||
~~~
|
||||
$ visual_metrics.py metrics_template.html "*stt" baseline mytweak \
|
||||
> mytweak.html
|
||||
~~~
|
||||
|
||||
You can view the report by opening mytweak.html in a web browser.
|
||||
|
||||
|
||||
### IDE hosted tests {#ide-hosted-tests}
|
||||
|
||||
By default the generated projects files created by CMake will not include the
|
||||
runtests and testdata rules when generating for IDEs like Microsoft Visual
|
||||
Studio and Xcode. This is done to avoid intolerably long build cycles in the
|
||||
IDEs-- IDE behavior is to build all targets when selecting the build project
|
||||
options in MSVS and Xcode. To enable the test rules in IDEs the
|
||||
`ENABLE_IDE_TEST_HOSTING` variable must be enabled at CMake generation time:
|
||||
|
||||
~~~
|
||||
# This example uses Xcode. To get a list of the generators
|
||||
# available, run cmake with the -G argument missing its
|
||||
# value.
|
||||
$ cmake path/to/aom -DENABLE_IDE_TEST_HOSTING=1 -G Xcode
|
||||
~~~
|
||||
|
||||
### Downloading the test data {#downloading-the-test-data}
|
||||
|
||||
The fastest and easiest way to obtain the test data is to use CMake to generate
|
||||
a build using the Unix Makefiles generator, and then to build only the testdata
|
||||
rule. By default the test files will be downloaded to the current directory. The
|
||||
`LIBAOM_TEST_DATA_PATH` environment variable can be used to set a
|
||||
custom one.
|
||||
|
||||
~~~
|
||||
$ cmake path/to/aom -G "Unix Makefiles"
|
||||
# 28 is used because there are 28 test files as of this writing.
|
||||
$ make -j28 testdata
|
||||
~~~
|
||||
|
||||
The above make command will only download and verify the test data.
|
||||
|
||||
### Adding a new test data file {#adding-a-new-test-data-file}
|
||||
|
||||
First, add the new test data file to the `aom-test-data` bucket of the
|
||||
`aomedia-testing` project on Google Cloud Platform. You may need to ask someone
|
||||
with the necessary access permissions to do this for you.
|
||||
|
||||
NOTE: When a new test data file is added to the `aom-test-data` bucket, its
|
||||
"Public access" is initially "Not public". We need to change its
|
||||
"Public access" to "Public" by using the following
|
||||
[`gsutil`](https://cloud.google.com/storage/docs/gsutil_install) command:
|
||||
~~~
|
||||
$ gsutil acl ch -g all:R gs://aom-test-data/test-data-file-name
|
||||
~~~
|
||||
This command grants the `AllUsers` group READ access to the file named
|
||||
"test-data-file-name" in the `aom-test-data` bucket.
|
||||
|
||||
Once the new test data file has been added to `aom-test-data`, create a CL to
|
||||
add the name of the new test data file to `test/test_data_util.cmake` and add
|
||||
the SHA1 checksum of the new test data file to `test/test-data.sha1`. (The SHA1
|
||||
checksum of a file can be calculated by running the `sha1sum` command on the
|
||||
file.)
|
||||
|
||||
### Additional test data {#additional-test-data}
|
||||
|
||||
The test data mentioned above is strictly intended for unit testing.
|
||||
|
||||
Additional input data for testing the encoder can be obtained from:
|
||||
https://media.xiph.org/video/derf/
|
||||
|
||||
### Sharded testing {#sharded-testing}
|
||||
|
||||
The AV1 codec library unit tests are built upon gtest which supports sharding of
|
||||
test jobs. Sharded test runs can be achieved in a couple of ways.
|
||||
|
||||
#### 1. Running test\_libaom directly: {#1_running-test_libaom-directly}
|
||||
|
||||
~~~
|
||||
# Set the environment variable GTEST_TOTAL_SHARDS to control the number of
|
||||
# shards.
|
||||
$ export GTEST_TOTAL_SHARDS=10
|
||||
# (GTEST shard indexing is 0 based).
|
||||
$ seq 0 $(( $GTEST_TOTAL_SHARDS - 1 )) \
|
||||
| xargs -n 1 -P 0 -I{} env GTEST_SHARD_INDEX={} ./test_libaom
|
||||
~~~
|
||||
|
||||
To create a test shard for each CPU core available on the current system set
|
||||
`GTEST_TOTAL_SHARDS` to the number of CPU cores on your system minus one.
|
||||
|
||||
#### 2. Running the tests via the CMake build: {#2_running-the-tests-via-the-cmake-build}
|
||||
|
||||
~~~
|
||||
# For IDE based builds, ENABLE_IDE_TEST_HOSTING must be enabled. See
|
||||
# the IDE hosted tests section above for more information. If the IDE
|
||||
# supports building targets concurrently tests will be sharded by default.
|
||||
|
||||
# For make and ninja builds the -j parameter controls the number of shards
|
||||
# at test run time. This example will run the tests using 10 shards via
|
||||
# make.
|
||||
$ make -j10 runtests
|
||||
~~~
|
||||
|
||||
The maximum number of test targets that can run concurrently is determined by
|
||||
the number of CPUs on the system where the build is configured as detected by
|
||||
CMake. A system with 24 cores can run 24 test shards using a value of 24 with
|
||||
the `-j` parameter. When CMake is unable to detect the number of cores 10 shards
|
||||
is the default maximum value.
|
||||
|
||||
## Coding style {#coding-style}
|
||||
|
||||
We are using the Google C Coding Style defined by the
|
||||
[Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html).
|
||||
|
||||
The coding style used by this project is enforced with clang-format using the
|
||||
configuration contained in the
|
||||
[.clang-format](https://chromium.googlesource.com/webm/aom/+/main/.clang-format)
|
||||
file in the root of the repository.
|
||||
|
||||
You can download clang-format using your system's package manager, or directly
|
||||
from [llvm.org](http://llvm.org/releases/download.html). You can also view the
|
||||
[documentation](https://clang.llvm.org/docs/ClangFormat.html) on llvm.org.
|
||||
Output from clang-format varies by clang-format version, for best results your
|
||||
version should match the one used on Jenkins. You can find the clang-format
|
||||
version by reading the comment in the `.clang-format` file linked above.
|
||||
|
||||
Before pushing changes for review you can format your code with:
|
||||
|
||||
~~~
|
||||
# Apply clang-format to modified .c, .h and .cc files
|
||||
$ clang-format -i --style=file \
|
||||
$(git diff --name-only --diff-filter=ACMR '*.[hc]' '*.cc')
|
||||
~~~
|
||||
|
||||
Check the .clang-format file for the version used to generate it if there is any
|
||||
difference between your local formatting and the review system.
|
||||
|
||||
Some Git installations have clang-format integration. Here are some examples:
|
||||
|
||||
~~~
|
||||
# Apply clang-format to all staged changes:
|
||||
$ git clang-format
|
||||
|
||||
# Clang format all staged and unstaged changes:
|
||||
$ git clang-format -f
|
||||
|
||||
# Clang format all staged and unstaged changes interactively:
|
||||
$ git clang-format -f -p
|
||||
~~~
|
||||
|
||||
## Submitting patches {#submitting-patches}
|
||||
|
||||
We manage the submission of patches using the
|
||||
[Gerrit](https://www.gerritcodereview.com/) code review tool. This tool
|
||||
implements a workflow on top of the Git version control system to ensure that
|
||||
all changes get peer reviewed and tested prior to their distribution.
|
||||
|
||||
### Login cookie {#login-cookie}
|
||||
|
||||
Browse to [AOMedia Git index](https://aomedia.googlesource.com/) and login with
|
||||
your account (Gmail credentials, for example). Next, follow the
|
||||
`Generate Password` Password link at the top of the page. You’ll be given
|
||||
instructions for creating a cookie to use with our Git repos.
|
||||
|
||||
### Contributor agreement {#contributor-agreement}
|
||||
|
||||
You will be required to execute a
|
||||
[contributor agreement](http://aomedia.org/license) to ensure that the AOMedia
|
||||
Project has the right to distribute your changes.
|
||||
|
||||
### Testing your code {#testing-your-code}
|
||||
|
||||
The testing basics are covered in the [testing section](#testing-the-av1-codec)
|
||||
above.
|
||||
|
||||
In addition to the local tests, many more (e.g. asan, tsan, valgrind) will run
|
||||
through Jenkins instances upon upload to gerrit.
|
||||
|
||||
### Commit message hook {#commit-message-hook}
|
||||
|
||||
Gerrit requires that each submission include a unique Change-Id. You can assign
|
||||
one manually using git commit --amend, but it’s easier to automate it with the
|
||||
commit-msg hook provided by Gerrit.
|
||||
|
||||
Copy commit-msg to the `.git/hooks` directory of your local repo. Here's an
|
||||
example:
|
||||
|
||||
~~~
|
||||
$ curl -Lo aom/.git/hooks/commit-msg https://chromium-review.googlesource.com/tools/hooks/commit-msg
|
||||
|
||||
# Next, ensure that the downloaded commit-msg script is executable:
|
||||
$ chmod u+x aom/.git/hooks/commit-msg
|
||||
~~~
|
||||
|
||||
See the Gerrit
|
||||
[documentation](https://gerrit-review.googlesource.com/Documentation/user-changeid.html)
|
||||
for more information.
|
||||
|
||||
### Upload your change {#upload-your-change}
|
||||
|
||||
The command line to upload your patch looks like this:
|
||||
|
||||
~~~
|
||||
$ git push https://aomedia-review.googlesource.com/aom HEAD:refs/for/main
|
||||
~~~
|
||||
|
||||
### Incorporating reviewer comments {#incorporating-reviewer-comments}
|
||||
|
||||
If you previously uploaded a change to Gerrit and the Approver has asked for
|
||||
changes, follow these steps:
|
||||
|
||||
1. Edit the files to make the changes the reviewer has requested.
|
||||
2. Recommit your edits using the --amend flag, for example:
|
||||
|
||||
~~~
|
||||
$ git commit -a --amend
|
||||
~~~
|
||||
|
||||
3. Use the same git push command as above to upload to Gerrit again for another
|
||||
review cycle.
|
||||
|
||||
In general, you should not rebase your changes when doing updates in response to
|
||||
review. Doing so can make it harder to follow the evolution of your change in
|
||||
the diff view.
|
||||
|
||||
### Submitting your change {#submitting-your-change}
|
||||
|
||||
Once your change has been Approved and Verified, you can “submit” it through the
|
||||
Gerrit UI. This will usually automatically rebase your change onto the branch
|
||||
specified.
|
||||
|
||||
Sometimes this can’t be done automatically. If you run into this problem, you
|
||||
must rebase your changes manually:
|
||||
|
||||
~~~
|
||||
$ git fetch
|
||||
$ git rebase origin/branchname
|
||||
~~~
|
||||
|
||||
If there are any conflicts, resolve them as you normally would with Git. When
|
||||
you’re done, reupload your change.
|
||||
|
||||
### Viewing the status of uploaded changes {#viewing-the-status-of-uploaded-changes}
|
||||
|
||||
To check the status of a change that you uploaded, open
|
||||
[Gerrit](https://aomedia-review.googlesource.com/), sign in, and click My >
|
||||
Changes.
|
||||
|
||||
## Support {#support}
|
||||
|
||||
This library is an open source project supported by its community. Please
|
||||
please email aomediacodec@jointdevelopment.kavi.com for help.
|
||||
|
||||
## Bug reports {#bug-reports}
|
||||
|
||||
Bug reports can be filed in the Alliance for Open Media
|
||||
[issue tracker](https://bugs.chromium.org/p/aomedia/issues/list).
|
||||
@@ -1,35 +0,0 @@
|
||||
#sample config file
|
||||
super_block_size = 128 # super block size. 0, 64 or 128
|
||||
max_partition_size = 128 # max partition size(8, 16, 32, 64, 128)
|
||||
min_partition_size = 4 # min partition size(4, 8, 16, 32, 64)
|
||||
disable_rect_partition_type = 0 # disable rectangle partition type
|
||||
disable_ab_partition_type = 0 # disable AB partition type
|
||||
disable_1to4_partition_type = 0 # disable 1 to 4 and 4 to 1 partition type
|
||||
disable_intra_angle_delta = 0 # disable intra angle delta
|
||||
disable_paeth_intra = 0 # disable paeth intra
|
||||
disable_smooth_intra = 0 # disable intra smooth mode
|
||||
disable_intra_edge_filter = 0 # disable intra edge filter
|
||||
disable_filter_intra = 0 # disable filter intra
|
||||
disable_intrabc = 0 # disable Intra Block Copy
|
||||
disable_cfl = 0 # disable chroma from luma prediction
|
||||
disable_palette = 0 # disable Palette
|
||||
disable_flip_idtx = 0 # disable flip and identity transform
|
||||
disable_tx_64x64 = 0 # disable 64x64 transform
|
||||
reduced_tx_type_set = 0 # use reduced transform type set
|
||||
reduced_reference_set = 0 # use reduced reference frame set
|
||||
disable_obmc = 0 # disable OBMC
|
||||
disable_warp_motion = 0 # disable Warped Motion
|
||||
disable_global_motion = 0 # disable global motion
|
||||
disable_ref_frame_mv = 0 # disable ref mv
|
||||
disable_dual_filter = 0 # disable dual interpolation filter
|
||||
disable_one_sided_comp = 0 # disable one sided compound mode
|
||||
disable_masked_comp = 0 # disable masked compound prediction
|
||||
disable_diff_wtd_comp = 0 # disable difference weighted compound mode
|
||||
disable_inter_inter_wedge = 0 # disable inter/inter wedge comp
|
||||
disable_dist_wtd_comp = 0 # disable distant weighted compound mode
|
||||
disable_inter_intra_comp = 0 # disable inter/intra compound mode.
|
||||
disable_inter_intra_wedge = 0 # disable inter/intra wedge comp
|
||||
disable_smooth_inter_intra = 0 # disable smooth inter/intra
|
||||
disable_cdef = 0 # disable CDEF filter
|
||||
disable_lr = 0 # disable Loop Restoration Filter
|
||||
disable_trellis_quant = 0 # disable trellis quantization
|
||||
@@ -1,127 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
|
||||
/*!\defgroup aom AOM
|
||||
* \ingroup codecs
|
||||
* AOM is aom's newest video compression algorithm that uses motion
|
||||
* compensated prediction, Discrete Cosine Transform (DCT) coding of the
|
||||
* prediction error signal and context dependent entropy coding techniques
|
||||
* based on arithmetic principles. It features:
|
||||
* - YUV 4:2:0 image format
|
||||
* - Macro-block based coding (16x16 luma plus two 8x8 chroma)
|
||||
* - 1/4 (1/8) pixel accuracy motion compensated prediction
|
||||
* - 4x4 DCT transform
|
||||
* - 128 level linear quantizer
|
||||
* - In loop deblocking filter
|
||||
* - Context-based entropy coding
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
/*!\file
|
||||
* \brief Provides controls common to both the AOM encoder and decoder.
|
||||
*/
|
||||
#ifndef AOM_AOM_AOM_H_
|
||||
#define AOM_AOM_AOM_H_
|
||||
|
||||
#include "aom/aom_codec.h"
|
||||
#include "aom/aom_image.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*!\brief Control functions
|
||||
*
|
||||
* The set of macros define the control functions of AOM interface
|
||||
* The range for common control IDs is 230-255(max).
|
||||
*/
|
||||
enum aom_com_control_id {
|
||||
/*!\brief Codec control function to get a pointer to a reference frame
|
||||
*
|
||||
* av1_ref_frame_t* parameter
|
||||
*/
|
||||
AV1_GET_REFERENCE = 230,
|
||||
|
||||
/*!\brief Codec control function to write a frame into a reference buffer
|
||||
*
|
||||
* av1_ref_frame_t* parameter
|
||||
*/
|
||||
AV1_SET_REFERENCE = 231,
|
||||
|
||||
/*!\brief Codec control function to get a copy of reference frame from the
|
||||
* decoder
|
||||
*
|
||||
* av1_ref_frame_t* parameter
|
||||
*/
|
||||
AV1_COPY_REFERENCE = 232,
|
||||
|
||||
/*!\brief Codec control function to get a pointer to the new frame
|
||||
*
|
||||
* aom_image_t* parameter
|
||||
*/
|
||||
AV1_GET_NEW_FRAME_IMAGE = 233,
|
||||
|
||||
/*!\brief Codec control function to copy the new frame to an external buffer
|
||||
*
|
||||
* aom_image_t* parameter
|
||||
*/
|
||||
AV1_COPY_NEW_FRAME_IMAGE = 234,
|
||||
|
||||
/*!\brief Start point of control IDs for aom_dec_control_id.
|
||||
* Any new common control IDs should be added above.
|
||||
*/
|
||||
AOM_DECODER_CTRL_ID_START = 256
|
||||
// No common control IDs should be added after AOM_DECODER_CTRL_ID_START.
|
||||
};
|
||||
|
||||
/*!\brief AV1 specific reference frame data struct
|
||||
*
|
||||
* Define the data struct to access av1 reference frames.
|
||||
*/
|
||||
typedef struct av1_ref_frame {
|
||||
int idx; /**< frame index to get (input) */
|
||||
int use_external_ref; /**< Directly use external ref buffer(decoder only) */
|
||||
aom_image_t img; /**< img structure to populate (output) */
|
||||
} av1_ref_frame_t;
|
||||
|
||||
/*!\cond */
|
||||
/*!\brief aom decoder control function parameter type
|
||||
*
|
||||
* Defines the data type for each of AOM decoder control function requires.
|
||||
*
|
||||
* \note For each control ID "X", a macro-define of
|
||||
* AOM_CTRL_X is provided. It is used at compile time to determine
|
||||
* if the control ID is supported by the libaom library available,
|
||||
* when the libaom version cannot be controlled.
|
||||
*/
|
||||
AOM_CTRL_USE_TYPE(AV1_GET_REFERENCE, av1_ref_frame_t *)
|
||||
#define AOM_CTRL_AV1_GET_REFERENCE
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1_SET_REFERENCE, av1_ref_frame_t *)
|
||||
#define AOM_CTRL_AV1_SET_REFERENCE
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1_COPY_REFERENCE, av1_ref_frame_t *)
|
||||
#define AOM_CTRL_AV1_COPY_REFERENCE
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1_GET_NEW_FRAME_IMAGE, aom_image_t *)
|
||||
#define AOM_CTRL_AV1_GET_NEW_FRAME_IMAGE
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1_COPY_NEW_FRAME_IMAGE, aom_image_t *)
|
||||
#define AOM_CTRL_AV1_COPY_NEW_FRAME_IMAGE
|
||||
|
||||
/*!\endcond */
|
||||
/*! @} - end defgroup aom */
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif // AOM_AOM_AOM_H_
|
||||
@@ -1,573 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Internal implementation details
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// There are two levels of interfaces used to access the AOM codec: the
|
||||
// the aom_codec_iface and the aom_codec_ctx.
|
||||
//
|
||||
// 1. aom_codec_iface_t
|
||||
// (Related files: aom/aom_codec.h, aom/src/aom_codec.c,
|
||||
// aom/internal/aom_codec_internal.h, av1/av1_cx_iface.c,
|
||||
// av1/av1_dx_iface.c)
|
||||
//
|
||||
// Used to initialize the codec context, which contains the configuration for
|
||||
// for modifying the encoder/decoder during run-time. See the other
|
||||
// documentation in this header file for more details. For the most part,
|
||||
// users will call helper functions, such as aom_codec_iface_name,
|
||||
// aom_codec_get_caps, etc., to interact with it.
|
||||
//
|
||||
// The main purpose of the aom_codec_iface_t is to provide a way to generate
|
||||
// a default codec config, find out what capabilities the implementation has,
|
||||
// and create an aom_codec_ctx_t (which is actually used to interact with the
|
||||
// codec).
|
||||
//
|
||||
// Note that the implementations for the AV1 algorithm are located in
|
||||
// av1/av1_cx_iface.c and av1/av1_dx_iface.c
|
||||
//
|
||||
//
|
||||
// 2. aom_codec_ctx_t
|
||||
// (Related files: aom/aom_codec.h, av1/av1_cx_iface.c, av1/av1_dx_iface.c,
|
||||
// aom/aomcx.h, aom/aomdx.h, aom/src/aom_encoder.c, aom/src/aom_decoder.c)
|
||||
//
|
||||
// The actual interface between user code and the codec. It stores the name
|
||||
// of the codec, a pointer back to the aom_codec_iface_t that initialized it,
|
||||
// initialization flags, a config for either encoder or the decoder, and a
|
||||
// pointer to internal data.
|
||||
//
|
||||
// The codec is configured / queried through calls to aom_codec_control,
|
||||
// which takes a control ID (listed in aomcx.h and aomdx.h) and a parameter.
|
||||
// In the case of "getter" control IDs, the parameter is modified to have
|
||||
// the requested value; in the case of "setter" control IDs, the codec's
|
||||
// configuration is changed based on the parameter. Note that a aom_codec_err_t
|
||||
// is returned, which indicates if the operation was successful or not.
|
||||
//
|
||||
// Note that for the encoder, the aom_codec_alg_priv_t points to the
|
||||
// the aom_codec_alg_priv structure in av1/av1_cx_iface.c, and for the decoder,
|
||||
// the struct in av1/av1_dx_iface.c. Variables such as AV1_COMP cpi are stored
|
||||
// here and also used in the core algorithm.
|
||||
//
|
||||
// At the end, aom_codec_destroy should be called for each initialized
|
||||
// aom_codec_ctx_t.
|
||||
|
||||
/*!\defgroup codec Common Algorithm Interface
|
||||
* This abstraction allows applications to easily support multiple video
|
||||
* formats with minimal code duplication. This section describes the interface
|
||||
* common to all codecs (both encoders and decoders).
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*!\file
|
||||
* \brief Describes the codec algorithm interface to applications.
|
||||
*
|
||||
* This file describes the interface between an application and a
|
||||
* video codec algorithm.
|
||||
*
|
||||
* An application instantiates a specific codec instance by using
|
||||
* aom_codec_dec_init() or aom_codec_enc_init() and a pointer to the
|
||||
* algorithm's interface structure:
|
||||
* <pre>
|
||||
* my_app.c:
|
||||
* extern aom_codec_iface_t my_codec;
|
||||
* {
|
||||
* aom_codec_ctx_t algo;
|
||||
* int threads = 4;
|
||||
* aom_codec_dec_cfg_t cfg = { threads, 0, 0, 1 };
|
||||
* res = aom_codec_dec_init(&algo, &my_codec, &cfg, 0);
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* Once initialized, the instance is managed using other functions from
|
||||
* the aom_codec_* family.
|
||||
*/
|
||||
#ifndef AOM_AOM_AOM_CODEC_H_
|
||||
#define AOM_AOM_AOM_CODEC_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "aom/aom_image.h"
|
||||
#include "aom/aom_integer.h"
|
||||
|
||||
/*!\brief Decorator indicating a function is deprecated */
|
||||
#ifndef AOM_DEPRECATED
|
||||
#if defined(__GNUC__) && __GNUC__
|
||||
#define AOM_DEPRECATED __attribute__((deprecated))
|
||||
#elif defined(_MSC_VER)
|
||||
#define AOM_DEPRECATED
|
||||
#else
|
||||
#define AOM_DEPRECATED
|
||||
#endif
|
||||
#endif /* AOM_DEPRECATED */
|
||||
|
||||
#ifndef AOM_DECLSPEC_DEPRECATED
|
||||
#if defined(__GNUC__) && __GNUC__
|
||||
#define AOM_DECLSPEC_DEPRECATED /**< \copydoc #AOM_DEPRECATED */
|
||||
#elif defined(_MSC_VER)
|
||||
/*!\brief \copydoc #AOM_DEPRECATED */
|
||||
#define AOM_DECLSPEC_DEPRECATED __declspec(deprecated)
|
||||
#else
|
||||
#define AOM_DECLSPEC_DEPRECATED /**< \copydoc #AOM_DEPRECATED */
|
||||
#endif
|
||||
#endif /* AOM_DECLSPEC_DEPRECATED */
|
||||
|
||||
/*!\brief Decorator indicating a function is potentially unused */
|
||||
#ifdef AOM_UNUSED
|
||||
#elif defined(__GNUC__) || defined(__clang__)
|
||||
#define AOM_UNUSED __attribute__((unused))
|
||||
#else
|
||||
#define AOM_UNUSED
|
||||
#endif
|
||||
|
||||
/*!\brief Decorator indicating that given struct/union/enum is packed */
|
||||
#ifndef ATTRIBUTE_PACKED
|
||||
#if defined(__GNUC__) && __GNUC__
|
||||
#define ATTRIBUTE_PACKED __attribute__((packed))
|
||||
#elif defined(_MSC_VER)
|
||||
#define ATTRIBUTE_PACKED
|
||||
#else
|
||||
#define ATTRIBUTE_PACKED
|
||||
#endif
|
||||
#endif /* ATTRIBUTE_PACKED */
|
||||
|
||||
/*!\brief Current ABI version number
|
||||
*
|
||||
* \internal
|
||||
* If this file is altered in any way that changes the ABI, this value
|
||||
* must be bumped. Examples include, but are not limited to, changing
|
||||
* types, removing or reassigning enums, adding/removing/rearranging
|
||||
* fields to structures
|
||||
*/
|
||||
#define AOM_CODEC_ABI_VERSION (7 + AOM_IMAGE_ABI_VERSION) /**<\hideinitializer*/
|
||||
|
||||
/*!\brief Algorithm return codes */
|
||||
typedef enum {
|
||||
/*!\brief Operation completed without error */
|
||||
AOM_CODEC_OK,
|
||||
|
||||
/*!\brief Unspecified error */
|
||||
AOM_CODEC_ERROR,
|
||||
|
||||
/*!\brief Memory operation failed */
|
||||
AOM_CODEC_MEM_ERROR,
|
||||
|
||||
/*!\brief ABI version mismatch */
|
||||
AOM_CODEC_ABI_MISMATCH,
|
||||
|
||||
/*!\brief Algorithm does not have required capability */
|
||||
AOM_CODEC_INCAPABLE,
|
||||
|
||||
/*!\brief The given bitstream is not supported.
|
||||
*
|
||||
* The bitstream was unable to be parsed at the highest level. The decoder
|
||||
* is unable to proceed. This error \ref SHOULD be treated as fatal to the
|
||||
* stream. */
|
||||
AOM_CODEC_UNSUP_BITSTREAM,
|
||||
|
||||
/*!\brief Encoded bitstream uses an unsupported feature
|
||||
*
|
||||
* The decoder does not implement a feature required by the encoder. This
|
||||
* return code should only be used for features that prevent future
|
||||
* pictures from being properly decoded. This error \ref MAY be treated as
|
||||
* fatal to the stream or \ref MAY be treated as fatal to the current GOP.
|
||||
*/
|
||||
AOM_CODEC_UNSUP_FEATURE,
|
||||
|
||||
/*!\brief The coded data for this stream is corrupt or incomplete
|
||||
*
|
||||
* There was a problem decoding the current frame. This return code
|
||||
* should only be used for failures that prevent future pictures from
|
||||
* being properly decoded. This error \ref MAY be treated as fatal to the
|
||||
* stream or \ref MAY be treated as fatal to the current GOP. If decoding
|
||||
* is continued for the current GOP, artifacts may be present.
|
||||
*/
|
||||
AOM_CODEC_CORRUPT_FRAME,
|
||||
|
||||
/*!\brief An application-supplied parameter is not valid.
|
||||
*
|
||||
*/
|
||||
AOM_CODEC_INVALID_PARAM,
|
||||
|
||||
/*!\brief An iterator reached the end of list.
|
||||
*
|
||||
*/
|
||||
AOM_CODEC_LIST_END
|
||||
|
||||
} aom_codec_err_t;
|
||||
|
||||
/*! \brief Codec capabilities bitfield
|
||||
*
|
||||
* Each codec advertises the capabilities it supports as part of its
|
||||
* ::aom_codec_iface_t interface structure. Capabilities are extra interfaces
|
||||
* or functionality, and are not required to be supported.
|
||||
*
|
||||
* The available flags are specified by AOM_CODEC_CAP_* defines.
|
||||
*/
|
||||
typedef long aom_codec_caps_t;
|
||||
#define AOM_CODEC_CAP_DECODER 0x1 /**< Is a decoder */
|
||||
#define AOM_CODEC_CAP_ENCODER 0x2 /**< Is an encoder */
|
||||
|
||||
/*! \brief Initialization-time Feature Enabling
|
||||
*
|
||||
* Certain codec features must be known at initialization time, to allow for
|
||||
* proper memory allocation.
|
||||
*
|
||||
* The available flags are specified by AOM_CODEC_USE_* defines.
|
||||
*/
|
||||
typedef long aom_codec_flags_t;
|
||||
|
||||
/*!\brief Time Stamp Type
|
||||
*
|
||||
* An integer, which when multiplied by the stream's time base, provides
|
||||
* the absolute time of a sample.
|
||||
*/
|
||||
typedef int64_t aom_codec_pts_t;
|
||||
|
||||
/*!\brief Codec interface structure.
|
||||
*
|
||||
* Contains function pointers and other data private to the codec
|
||||
* implementation. This structure is opaque to the application. Common
|
||||
* functions used with this structure:
|
||||
* - aom_codec_iface_name(aom_codec_iface_t *iface): get the
|
||||
* name of the codec
|
||||
* - aom_codec_get_caps(aom_codec_iface_t *iface): returns
|
||||
* the capabilities of the codec
|
||||
* - aom_codec_enc_config_default: generate the default config for
|
||||
* initializing the encoder (see documention in aom_encoder.h)
|
||||
* - aom_codec_dec_init, aom_codec_enc_init: initialize the codec context
|
||||
* structure (see documentation on aom_codec_ctx).
|
||||
*
|
||||
* To get access to the AV1 encoder and decoder, use aom_codec_av1_cx() and
|
||||
* aom_codec_av1_dx().
|
||||
*/
|
||||
typedef const struct aom_codec_iface aom_codec_iface_t;
|
||||
|
||||
/*!\brief Codec private data structure.
|
||||
*
|
||||
* Contains data private to the codec implementation. This structure is opaque
|
||||
* to the application.
|
||||
*/
|
||||
typedef struct aom_codec_priv aom_codec_priv_t;
|
||||
|
||||
/*!\brief Compressed Frame Flags
|
||||
*
|
||||
* This type represents a bitfield containing information about a compressed
|
||||
* frame that may be useful to an application. The most significant 16 bits
|
||||
* can be used by an algorithm to provide additional detail, for example to
|
||||
* support frame types that are codec specific (MPEG-1 D-frames for example)
|
||||
*/
|
||||
typedef uint32_t aom_codec_frame_flags_t;
|
||||
#define AOM_FRAME_IS_KEY 0x1 /**< frame is the start of a GOP */
|
||||
/*!\brief frame can be dropped without affecting the stream (no future frame
|
||||
* depends on this one) */
|
||||
#define AOM_FRAME_IS_DROPPABLE 0x2
|
||||
/*!\brief this is an INTRA_ONLY frame */
|
||||
#define AOM_FRAME_IS_INTRAONLY 0x10
|
||||
/*!\brief this is an S-frame */
|
||||
#define AOM_FRAME_IS_SWITCH 0x20
|
||||
/*!\brief this is an error-resilient frame */
|
||||
#define AOM_FRAME_IS_ERROR_RESILIENT 0x40
|
||||
/*!\brief this is a key-frame dependent recovery-point frame */
|
||||
#define AOM_FRAME_IS_DELAYED_RANDOM_ACCESS_POINT 0x80
|
||||
|
||||
/*!\brief Iterator
|
||||
*
|
||||
* Opaque storage used for iterating over lists.
|
||||
*/
|
||||
typedef const void *aom_codec_iter_t;
|
||||
|
||||
/*!\brief Codec context structure
|
||||
*
|
||||
* All codecs \ref MUST support this context structure fully. In general,
|
||||
* this data should be considered private to the codec algorithm, and
|
||||
* not be manipulated or examined by the calling application. Applications
|
||||
* may reference the 'name' member to get a printable description of the
|
||||
* algorithm.
|
||||
*/
|
||||
typedef struct aom_codec_ctx {
|
||||
const char *name; /**< Printable interface name */
|
||||
aom_codec_iface_t *iface; /**< Interface pointers */
|
||||
aom_codec_err_t err; /**< Last returned error */
|
||||
const char *err_detail; /**< Detailed info, if available */
|
||||
aom_codec_flags_t init_flags; /**< Flags passed at init time */
|
||||
union {
|
||||
/**< Decoder Configuration Pointer */
|
||||
const struct aom_codec_dec_cfg *dec;
|
||||
/**< Encoder Configuration Pointer */
|
||||
const struct aom_codec_enc_cfg *enc;
|
||||
const void *raw;
|
||||
} config; /**< Configuration pointer aliasing union */
|
||||
aom_codec_priv_t *priv; /**< Algorithm private storage */
|
||||
} aom_codec_ctx_t;
|
||||
|
||||
/*!\brief Bit depth for codec
|
||||
* *
|
||||
* This enumeration determines the bit depth of the codec.
|
||||
*/
|
||||
typedef enum aom_bit_depth {
|
||||
AOM_BITS_8 = 8, /**< 8 bits */
|
||||
AOM_BITS_10 = 10, /**< 10 bits */
|
||||
AOM_BITS_12 = 12, /**< 12 bits */
|
||||
} aom_bit_depth_t;
|
||||
|
||||
/*!\brief Superblock size selection.
|
||||
*
|
||||
* Defines the superblock size used for encoding. The superblock size can
|
||||
* either be fixed at 64x64 or 128x128 pixels, or it can be dynamically
|
||||
* selected by the encoder for each frame.
|
||||
*/
|
||||
typedef enum aom_superblock_size {
|
||||
AOM_SUPERBLOCK_SIZE_64X64, /**< Always use 64x64 superblocks. */
|
||||
AOM_SUPERBLOCK_SIZE_128X128, /**< Always use 128x128 superblocks. */
|
||||
AOM_SUPERBLOCK_SIZE_DYNAMIC /**< Select superblock size dynamically. */
|
||||
} aom_superblock_size_t;
|
||||
|
||||
/*
|
||||
* Library Version Number Interface
|
||||
*
|
||||
* For example, see the following sample return values:
|
||||
* aom_codec_version() (1<<16 | 2<<8 | 3)
|
||||
* aom_codec_version_str() "v1.2.3-rc1-16-gec6a1ba"
|
||||
* aom_codec_version_extra_str() "rc1-16-gec6a1ba"
|
||||
*/
|
||||
|
||||
/*!\brief Return the version information (as an integer)
|
||||
*
|
||||
* Returns a packed encoding of the library version number. This will only
|
||||
* include the major.minor.patch component of the version number. Note that this
|
||||
* encoded value should be accessed through the macros provided, as the encoding
|
||||
* may change in the future.
|
||||
*
|
||||
*/
|
||||
int aom_codec_version(void);
|
||||
|
||||
/*!\brief Return the major version number */
|
||||
#define aom_codec_version_major() ((aom_codec_version() >> 16) & 0xff)
|
||||
|
||||
/*!\brief Return the minor version number */
|
||||
#define aom_codec_version_minor() ((aom_codec_version() >> 8) & 0xff)
|
||||
|
||||
/*!\brief Return the patch version number */
|
||||
#define aom_codec_version_patch() ((aom_codec_version() >> 0) & 0xff)
|
||||
|
||||
/*!\brief Return the version information (as a string)
|
||||
*
|
||||
* Returns a printable string containing the full library version number. This
|
||||
* may contain additional text following the three digit version number, as to
|
||||
* indicate release candidates, prerelease versions, etc.
|
||||
*
|
||||
*/
|
||||
const char *aom_codec_version_str(void);
|
||||
|
||||
/*!\brief Return the version information (as a string)
|
||||
*
|
||||
* Returns a printable "extra string". This is the component of the string
|
||||
* returned by aom_codec_version_str() following the three digit version number.
|
||||
*
|
||||
*/
|
||||
const char *aom_codec_version_extra_str(void);
|
||||
|
||||
/*!\brief Return the build configuration
|
||||
*
|
||||
* Returns a printable string containing an encoded version of the build
|
||||
* configuration. This may be useful to aom support.
|
||||
*
|
||||
*/
|
||||
const char *aom_codec_build_config(void);
|
||||
|
||||
/*!\brief Return the name for a given interface
|
||||
*
|
||||
* Returns a human readable string for name of the given codec interface.
|
||||
*
|
||||
* \param[in] iface Interface pointer
|
||||
*
|
||||
*/
|
||||
const char *aom_codec_iface_name(aom_codec_iface_t *iface);
|
||||
|
||||
/*!\brief Convert error number to printable string
|
||||
*
|
||||
* Returns a human readable string for the last error returned by the
|
||||
* algorithm. The returned error will be one line and will not contain
|
||||
* any newline characters.
|
||||
*
|
||||
*
|
||||
* \param[in] err Error number.
|
||||
*
|
||||
*/
|
||||
const char *aom_codec_err_to_string(aom_codec_err_t err);
|
||||
|
||||
/*!\brief Retrieve error synopsis for codec context
|
||||
*
|
||||
* Returns a human readable string for the last error returned by the
|
||||
* algorithm. The returned error will be one line and will not contain
|
||||
* any newline characters.
|
||||
*
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context.
|
||||
*
|
||||
*/
|
||||
const char *aom_codec_error(aom_codec_ctx_t *ctx);
|
||||
|
||||
/*!\brief Retrieve detailed error information for codec context
|
||||
*
|
||||
* Returns a human readable string providing detailed information about
|
||||
* the last error.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context.
|
||||
*
|
||||
* \retval NULL
|
||||
* No detailed information is available.
|
||||
*/
|
||||
const char *aom_codec_error_detail(aom_codec_ctx_t *ctx);
|
||||
|
||||
/* REQUIRED FUNCTIONS
|
||||
*
|
||||
* The following functions are required to be implemented for all codecs.
|
||||
* They represent the base case functionality expected of all codecs.
|
||||
*/
|
||||
|
||||
/*!\brief Destroy a codec instance
|
||||
*
|
||||
* Destroys a codec context, freeing any associated memory buffers.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
*
|
||||
* \retval #AOM_CODEC_OK
|
||||
* The codec algorithm initialized.
|
||||
* \retval #AOM_CODEC_MEM_ERROR
|
||||
* Memory allocation failed.
|
||||
*/
|
||||
aom_codec_err_t aom_codec_destroy(aom_codec_ctx_t *ctx);
|
||||
|
||||
/*!\brief Get the capabilities of an algorithm.
|
||||
*
|
||||
* Retrieves the capabilities bitfield from the algorithm's interface.
|
||||
*
|
||||
* \param[in] iface Pointer to the algorithm interface
|
||||
*
|
||||
*/
|
||||
aom_codec_caps_t aom_codec_get_caps(aom_codec_iface_t *iface);
|
||||
|
||||
/*!\name Codec Control
|
||||
*
|
||||
* The aom_codec_control function exchanges algorithm specific data with the
|
||||
* codec instance. Additionally, the macro AOM_CODEC_CONTROL_TYPECHECKED is
|
||||
* provided, which will type-check the parameter against the control ID before
|
||||
* calling aom_codec_control - note that this macro requires the control ID
|
||||
* to be directly encoded in it, e.g.,
|
||||
* AOM_CODEC_CONTROL_TYPECHECKED(&ctx, AOME_SET_CPUUSED, 8).
|
||||
*
|
||||
* The codec control IDs can be found in aom.h, aomcx.h, and aomdx.h
|
||||
* (defined as aom_com_control_id, aome_enc_control_id, and aom_dec_control_id).
|
||||
* @{
|
||||
*/
|
||||
/*!\brief Algorithm Control
|
||||
*
|
||||
* aom_codec_control takes a context, a control ID, and a third parameter
|
||||
* (with varying type). If the context is non-null and an error occurs,
|
||||
* ctx->err will be set to the same value as the return value.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
* \param[in] ctrl_id Algorithm specific control identifier.
|
||||
* Must be nonzero.
|
||||
*
|
||||
* \retval #AOM_CODEC_OK
|
||||
* The control request was processed.
|
||||
* \retval #AOM_CODEC_ERROR
|
||||
* The control request was not processed.
|
||||
* \retval #AOM_CODEC_INVALID_PARAM
|
||||
* The control ID was zero, or the data was not valid.
|
||||
*/
|
||||
aom_codec_err_t aom_codec_control(aom_codec_ctx_t *ctx, int ctrl_id, ...);
|
||||
|
||||
/*!\brief Key & Value API
|
||||
*
|
||||
* aom_codec_set_option() takes a context, a key (option name) and a value. If
|
||||
* the context is non-null and an error occurs, ctx->err will be set to the same
|
||||
* value as the return value.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
* \param[in] name The name of the option (key)
|
||||
* \param[in] value The value of the option
|
||||
*
|
||||
* \retval #AOM_CODEC_OK
|
||||
* The value of the option was set.
|
||||
* \retval #AOM_CODEC_INVALID_PARAM
|
||||
* The data was not valid.
|
||||
* \retval #AOM_CODEC_ERROR
|
||||
* The option was not successfully set.
|
||||
*/
|
||||
aom_codec_err_t aom_codec_set_option(aom_codec_ctx_t *ctx, const char *name,
|
||||
const char *value);
|
||||
|
||||
/*!\brief aom_codec_control wrapper macro (adds type-checking, less flexible)
|
||||
*
|
||||
* This macro allows for type safe conversions across the variadic parameter
|
||||
* to aom_codec_control(). However, it requires the explicit control ID
|
||||
* be passed in (it cannot be passed in via a variable) -- otherwise a compiler
|
||||
* error will occur. After the type checking, it calls aom_codec_control.
|
||||
*/
|
||||
#define AOM_CODEC_CONTROL_TYPECHECKED(ctx, id, data) \
|
||||
aom_codec_control_typechecked_##id(ctx, id, data) /**<\hideinitializer*/
|
||||
|
||||
/*!\brief Creates typechecking mechanisms for aom_codec_control
|
||||
*
|
||||
* It defines a static function with the correctly typed arguments as a wrapper
|
||||
* to the type-unsafe aom_codec_control function. It also creates a typedef
|
||||
* for each type.
|
||||
*/
|
||||
#define AOM_CTRL_USE_TYPE(id, typ) \
|
||||
static aom_codec_err_t aom_codec_control_typechecked_##id( \
|
||||
aom_codec_ctx_t *, int, typ) AOM_UNUSED; \
|
||||
static aom_codec_err_t aom_codec_control_typechecked_##id( \
|
||||
aom_codec_ctx_t *ctx, int ctrl, typ data) { \
|
||||
return aom_codec_control(ctx, ctrl, data); \
|
||||
} /**<\hideinitializer*/ \
|
||||
typedef typ aom_codec_control_type_##id;
|
||||
/*!@} end Codec Control group */
|
||||
|
||||
/*!\brief OBU types. */
|
||||
typedef enum ATTRIBUTE_PACKED {
|
||||
OBU_SEQUENCE_HEADER = 1,
|
||||
OBU_TEMPORAL_DELIMITER = 2,
|
||||
OBU_FRAME_HEADER = 3,
|
||||
OBU_TILE_GROUP = 4,
|
||||
OBU_METADATA = 5,
|
||||
OBU_FRAME = 6,
|
||||
OBU_REDUNDANT_FRAME_HEADER = 7,
|
||||
OBU_TILE_LIST = 8,
|
||||
OBU_PADDING = 15,
|
||||
} OBU_TYPE;
|
||||
|
||||
/*!\brief OBU metadata types. */
|
||||
typedef enum {
|
||||
OBU_METADATA_TYPE_AOM_RESERVED_0 = 0,
|
||||
OBU_METADATA_TYPE_HDR_CLL = 1,
|
||||
OBU_METADATA_TYPE_HDR_MDCV = 2,
|
||||
OBU_METADATA_TYPE_SCALABILITY = 3,
|
||||
OBU_METADATA_TYPE_ITUT_T35 = 4,
|
||||
OBU_METADATA_TYPE_TIMECODE = 5,
|
||||
} OBU_METADATA_TYPE;
|
||||
|
||||
/*!\brief Returns string representation of OBU_TYPE.
|
||||
*
|
||||
* \param[in] type The OBU_TYPE to convert to string.
|
||||
*/
|
||||
const char *aom_obu_type_to_string(OBU_TYPE type);
|
||||
|
||||
/*!@} - end defgroup codec*/
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif // AOM_AOM_AOM_CODEC_H_
|
||||
@@ -1,257 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
#ifndef AOM_AOM_AOM_DECODER_H_
|
||||
#define AOM_AOM_AOM_DECODER_H_
|
||||
|
||||
/*!\defgroup decoder Decoder Algorithm Interface
|
||||
* \ingroup codec
|
||||
* This abstraction allows applications using this decoder to easily support
|
||||
* multiple video formats with minimal code duplication. This section describes
|
||||
* the interface common to all decoders.
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*!\file
|
||||
* \brief Describes the decoder algorithm interface to applications.
|
||||
*
|
||||
* This file describes the interface between an application and a
|
||||
* video decoder algorithm.
|
||||
*
|
||||
*/
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "aom/aom_codec.h"
|
||||
#include "aom/aom_frame_buffer.h"
|
||||
|
||||
/*!\brief Current ABI version number
|
||||
*
|
||||
* \internal
|
||||
* If this file is altered in any way that changes the ABI, this value
|
||||
* must be bumped. Examples include, but are not limited to, changing
|
||||
* types, removing or reassigning enums, adding/removing/rearranging
|
||||
* fields to structures
|
||||
*/
|
||||
#define AOM_DECODER_ABI_VERSION \
|
||||
(6 + AOM_CODEC_ABI_VERSION) /**<\hideinitializer*/
|
||||
|
||||
/*! \brief Decoder capabilities bitfield
|
||||
*
|
||||
* Each decoder advertises the capabilities it supports as part of its
|
||||
* ::aom_codec_iface_t interface structure. Capabilities are extra interfaces
|
||||
* or functionality, and are not required to be supported by a decoder.
|
||||
*
|
||||
* The available flags are specified by AOM_CODEC_CAP_* defines.
|
||||
*/
|
||||
/*!brief Can support external frame buffers */
|
||||
#define AOM_CODEC_CAP_EXTERNAL_FRAME_BUFFER 0x200000
|
||||
|
||||
/*! \brief Initialization-time Feature Enabling
|
||||
*
|
||||
* Certain codec features must be known at initialization time, to allow for
|
||||
* proper memory allocation.
|
||||
*
|
||||
* The available flags are specified by AOM_CODEC_USE_* defines.
|
||||
*/
|
||||
|
||||
/*!\brief Stream properties
|
||||
*
|
||||
* This structure is used to query or set properties of the decoded
|
||||
* stream.
|
||||
*/
|
||||
typedef struct aom_codec_stream_info {
|
||||
unsigned int w; /**< Width (or 0 for unknown/default) */
|
||||
unsigned int h; /**< Height (or 0 for unknown/default) */
|
||||
unsigned int is_kf; /**< Current frame is a keyframe */
|
||||
unsigned int number_spatial_layers; /**< Number of spatial layers */
|
||||
unsigned int number_temporal_layers; /**< Number of temporal layers */
|
||||
unsigned int is_annexb; /**< Is Bitstream in Annex-B format */
|
||||
} aom_codec_stream_info_t;
|
||||
|
||||
/* REQUIRED FUNCTIONS
|
||||
*
|
||||
* The following functions are required to be implemented for all decoders.
|
||||
* They represent the base case functionality expected of all decoders.
|
||||
*/
|
||||
|
||||
/*!\brief Initialization Configurations
|
||||
*
|
||||
* This structure is used to pass init time configuration options to the
|
||||
* decoder.
|
||||
*/
|
||||
typedef struct aom_codec_dec_cfg {
|
||||
unsigned int threads; /**< Maximum number of threads to use, default 1 */
|
||||
unsigned int w; /**< Width */
|
||||
unsigned int h; /**< Height */
|
||||
unsigned int allow_lowbitdepth; /**< Allow use of low-bitdepth coding path */
|
||||
} aom_codec_dec_cfg_t; /**< alias for struct aom_codec_dec_cfg */
|
||||
|
||||
/*!\brief Initialize a decoder instance
|
||||
*
|
||||
* Initializes a decoder context using the given interface. Applications
|
||||
* should call the aom_codec_dec_init convenience macro instead of this
|
||||
* function directly, to ensure that the ABI version number parameter
|
||||
* is properly initialized.
|
||||
*
|
||||
* If the library was configured with cmake -DCONFIG_MULTITHREAD=0, this
|
||||
* call is not thread safe and should be guarded with a lock if being used
|
||||
* in a multithreaded context.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context.
|
||||
* \param[in] iface Pointer to the algorithm interface to use.
|
||||
* \param[in] cfg Configuration to use, if known. May be NULL.
|
||||
* \param[in] flags Bitfield of AOM_CODEC_USE_* flags
|
||||
* \param[in] ver ABI version number. Must be set to
|
||||
* AOM_DECODER_ABI_VERSION
|
||||
* \retval #AOM_CODEC_OK
|
||||
* The decoder algorithm initialized.
|
||||
* \retval #AOM_CODEC_MEM_ERROR
|
||||
* Memory allocation failed.
|
||||
*/
|
||||
aom_codec_err_t aom_codec_dec_init_ver(aom_codec_ctx_t *ctx,
|
||||
aom_codec_iface_t *iface,
|
||||
const aom_codec_dec_cfg_t *cfg,
|
||||
aom_codec_flags_t flags, int ver);
|
||||
|
||||
/*!\brief Convenience macro for aom_codec_dec_init_ver()
|
||||
*
|
||||
* Ensures the ABI version parameter is properly set.
|
||||
*/
|
||||
#define aom_codec_dec_init(ctx, iface, cfg, flags) \
|
||||
aom_codec_dec_init_ver(ctx, iface, cfg, flags, AOM_DECODER_ABI_VERSION)
|
||||
|
||||
/*!\brief Parse stream info from a buffer
|
||||
*
|
||||
* Performs high level parsing of the bitstream. Construction of a decoder
|
||||
* context is not necessary. Can be used to determine if the bitstream is
|
||||
* of the proper format, and to extract information from the stream.
|
||||
*
|
||||
* \param[in] iface Pointer to the algorithm interface
|
||||
* \param[in] data Pointer to a block of data to parse
|
||||
* \param[in] data_sz Size of the data buffer
|
||||
* \param[in,out] si Pointer to stream info to update. The is_annexb
|
||||
* member \ref MUST be properly initialized. This
|
||||
* function sets the rest of the members.
|
||||
*
|
||||
* \retval #AOM_CODEC_OK
|
||||
* Bitstream is parsable and stream information updated.
|
||||
* \retval #AOM_CODEC_INVALID_PARAM
|
||||
* One of the arguments is invalid, for example a NULL pointer.
|
||||
* \retval #AOM_CODEC_UNSUP_BITSTREAM
|
||||
* The decoder didn't recognize the coded data, or the
|
||||
* buffer was too short.
|
||||
*/
|
||||
aom_codec_err_t aom_codec_peek_stream_info(aom_codec_iface_t *iface,
|
||||
const uint8_t *data, size_t data_sz,
|
||||
aom_codec_stream_info_t *si);
|
||||
|
||||
/*!\brief Return information about the current stream.
|
||||
*
|
||||
* Returns information about the stream that has been parsed during decoding.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
* \param[in,out] si Pointer to stream info to update.
|
||||
*
|
||||
* \retval #AOM_CODEC_OK
|
||||
* Bitstream is parsable and stream information updated.
|
||||
* \retval #AOM_CODEC_INVALID_PARAM
|
||||
* One of the arguments is invalid, for example a NULL pointer.
|
||||
* \retval #AOM_CODEC_UNSUP_BITSTREAM
|
||||
* The decoder couldn't parse the submitted data.
|
||||
*/
|
||||
aom_codec_err_t aom_codec_get_stream_info(aom_codec_ctx_t *ctx,
|
||||
aom_codec_stream_info_t *si);
|
||||
|
||||
/*!\brief Decode data
|
||||
*
|
||||
* Processes a buffer of coded data. Encoded data \ref MUST be passed in DTS
|
||||
* (decode time stamp) order. Frames produced will always be in PTS
|
||||
* (presentation time stamp) order.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
* \param[in] data Pointer to this block of new coded data.
|
||||
* \param[in] data_sz Size of the coded data, in bytes.
|
||||
* \param[in] user_priv Application specific data to associate with
|
||||
* this frame.
|
||||
*
|
||||
* \return Returns #AOM_CODEC_OK if the coded data was processed completely
|
||||
* and future pictures can be decoded without error. Otherwise,
|
||||
* see the descriptions of the other error codes in ::aom_codec_err_t
|
||||
* for recoverability capabilities.
|
||||
*/
|
||||
aom_codec_err_t aom_codec_decode(aom_codec_ctx_t *ctx, const uint8_t *data,
|
||||
size_t data_sz, void *user_priv);
|
||||
|
||||
/*!\brief Decoded frames iterator
|
||||
*
|
||||
* Iterates over a list of the frames available for display. The iterator
|
||||
* storage should be initialized to NULL to start the iteration. Iteration is
|
||||
* complete when this function returns NULL.
|
||||
*
|
||||
* The list of available frames becomes valid upon completion of the
|
||||
* aom_codec_decode call, and remains valid until the next call to
|
||||
* aom_codec_decode.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
* \param[in,out] iter Iterator storage, initialized to NULL
|
||||
*
|
||||
* \return Returns a pointer to an image, if one is ready for display. Frames
|
||||
* produced will always be in PTS (presentation time stamp) order.
|
||||
*/
|
||||
aom_image_t *aom_codec_get_frame(aom_codec_ctx_t *ctx, aom_codec_iter_t *iter);
|
||||
|
||||
/*!\defgroup cap_external_frame_buffer External Frame Buffer Functions
|
||||
*
|
||||
* The following function is required to be implemented for all decoders
|
||||
* that advertise the AOM_CODEC_CAP_EXTERNAL_FRAME_BUFFER capability.
|
||||
* Calling this function for codecs that don't advertise this capability
|
||||
* will result in an error code being returned, usually AOM_CODEC_INCAPABLE.
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*!\brief Pass in external frame buffers for the decoder to use.
|
||||
*
|
||||
* Registers functions to be called when libaom needs a frame buffer
|
||||
* to decode the current frame and a function to be called when libaom does
|
||||
* not internally reference the frame buffer. This set function must
|
||||
* be called before the first call to decode or libaom will assume the
|
||||
* default behavior of allocating frame buffers internally.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
* \param[in] cb_get Pointer to the get callback function
|
||||
* \param[in] cb_release Pointer to the release callback function
|
||||
* \param[in] cb_priv Callback's private data
|
||||
*
|
||||
* \retval #AOM_CODEC_OK
|
||||
* External frame buffers will be used by libaom.
|
||||
* \retval #AOM_CODEC_INVALID_PARAM
|
||||
* One or more of the callbacks were NULL.
|
||||
* \retval #AOM_CODEC_ERROR
|
||||
* Decoder context not initialized.
|
||||
* \retval #AOM_CODEC_INCAPABLE
|
||||
* Algorithm not capable of using external frame buffers.
|
||||
*
|
||||
* \note
|
||||
* When decoding AV1, the application may be required to pass in at least
|
||||
* #AOM_MAXIMUM_WORK_BUFFERS external frame buffers.
|
||||
*/
|
||||
aom_codec_err_t aom_codec_set_frame_buffer_functions(
|
||||
aom_codec_ctx_t *ctx, aom_get_frame_buffer_cb_fn_t cb_get,
|
||||
aom_release_frame_buffer_cb_fn_t cb_release, void *cb_priv);
|
||||
|
||||
/*!@} - end defgroup cap_external_frame_buffer */
|
||||
|
||||
/*!@} - end defgroup decoder*/
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif // AOM_AOM_AOM_DECODER_H_
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,452 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2021, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
#ifndef AOM_AOM_AOM_EXTERNAL_PARTITION_H_
|
||||
#define AOM_AOM_AOM_EXTERNAL_PARTITION_H_
|
||||
|
||||
/*!\defgroup aom_encoder AOMedia AOM/AV1 Encoder
|
||||
* \ingroup aom
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
#include <stdint.h>
|
||||
|
||||
/*!\file
|
||||
* \brief Provides function pointer definitions for the external partition.
|
||||
*
|
||||
* \note The external partition API should be considered experimental. Until the
|
||||
* external partition API is declared stable, breaking changes may be made to
|
||||
* this API in a future libaom release.
|
||||
*/
|
||||
|
||||
/*!\brief Current ABI version number
|
||||
*
|
||||
* \internal
|
||||
* If this file is altered in any way that changes the ABI, this value
|
||||
* must be bumped. Examples include, but are not limited to, changing
|
||||
* types, removing or reassigning enums, adding/removing/rearranging
|
||||
* fields to structures.
|
||||
*/
|
||||
#define AOM_EXT_PART_ABI_VERSION 8
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*!\brief Abstract external partition model handler
|
||||
*/
|
||||
typedef void *aom_ext_part_model_t;
|
||||
|
||||
/*!\brief Number of features to determine whether to skip partition none and
|
||||
* do partition split directly. The same as "FEATURE_SIZE_SMS_SPLIT".
|
||||
*/
|
||||
#define AOM_EXT_PART_SIZE_DIRECT_SPLIT 17
|
||||
|
||||
/*!\brief Number of features to use simple motion search to prune out
|
||||
* rectangular partition in some direction. The same as
|
||||
* "FEATURE_SIZE_SMS_PRUNE_PART".
|
||||
*/
|
||||
#define AOM_EXT_PART_SIZE_PRUNE_PART 25
|
||||
|
||||
/*!\brief Number of features to prune split and rectangular partition
|
||||
* after PARTITION_NONE.
|
||||
*/
|
||||
#define AOM_EXT_PART_SIZE_PRUNE_NONE 4
|
||||
|
||||
/*!\brief Number of features to terminates partition after partition none using
|
||||
* simple_motion_search features and the rate, distortion, and rdcost of
|
||||
* PARTITION_NONE. The same as "FEATURE_SIZE_SMS_TERM_NONE".
|
||||
*/
|
||||
#define AOM_EXT_PART_SIZE_TERM_NONE 28
|
||||
|
||||
/*!\brief Number of features to terminates partition after partition split.
|
||||
*/
|
||||
#define AOM_EXT_PART_SIZE_TERM_SPLIT 31
|
||||
|
||||
/*!\brief Number of features to prune rectangular partition using stats
|
||||
* collected after partition split.
|
||||
*/
|
||||
#define AOM_EXT_PART_SIZE_PRUNE_RECT 9
|
||||
|
||||
/*!\brief Number of features to prune AB partition using stats
|
||||
* collected after rectangular partition..
|
||||
*/
|
||||
#define AOM_EXT_PART_SIZE_PRUNE_AB 10
|
||||
|
||||
/*!\brief Number of features to prune 4-way partition using stats
|
||||
* collected after AB partition.
|
||||
*/
|
||||
#define AOM_EXT_PART_SIZE_PRUNE_4_WAY 18
|
||||
|
||||
/*!\brief Decision mode of the external partition model.
|
||||
* AOM_EXT_PART_WHOLE_TREE: the external partition model should provide the
|
||||
* whole partition tree for the superblock.
|
||||
*
|
||||
* AOM_EXT_PART_RECURSIVE: the external partition model provides the partition
|
||||
* decision of the current block only. The decision process starts from
|
||||
* the superblock size, down to the smallest block size (4x4) recursively.
|
||||
*/
|
||||
typedef enum aom_ext_part_decision_mode {
|
||||
AOM_EXT_PART_WHOLE_TREE = 0,
|
||||
AOM_EXT_PART_RECURSIVE = 1,
|
||||
} aom_ext_part_decision_mode_t;
|
||||
|
||||
/*!\brief Config information sent to the external partition model.
|
||||
*
|
||||
* For example, the maximum superblock size determined by the sequence header.
|
||||
*/
|
||||
typedef struct aom_ext_part_config {
|
||||
int superblock_size; ///< super block size (either 64x64 or 128x128)
|
||||
} aom_ext_part_config_t;
|
||||
|
||||
/*!\brief Features pass to the external model to make partition decisions.
|
||||
* Specifically, features collected before NONE partition.
|
||||
* Features "f" are used to determine:
|
||||
* partition_none_allowed, partition_horz_allowed, partition_vert_allowed,
|
||||
* do_rectangular_split, do_square_split
|
||||
* Features "f_part2" are used to determine:
|
||||
* prune_horz, prune_vert.
|
||||
*/
|
||||
typedef struct aom_partition_features_before_none {
|
||||
/*! features to determine whether skip partition none and do split directly */
|
||||
float f[AOM_EXT_PART_SIZE_DIRECT_SPLIT];
|
||||
/*! features to determine whether to prune rectangular partition */
|
||||
float f_part2[AOM_EXT_PART_SIZE_PRUNE_PART];
|
||||
} aom_partition_features_before_none_t;
|
||||
|
||||
/*!\brief Features pass to the external model to make partition decisions.
|
||||
* Specifically, features collected after NONE partition.
|
||||
*/
|
||||
typedef struct aom_partition_features_none {
|
||||
/*! features to prune split and rectangular partition */
|
||||
float f[AOM_EXT_PART_SIZE_PRUNE_NONE];
|
||||
/*! features to determine termination of partition */
|
||||
float f_terminate[AOM_EXT_PART_SIZE_TERM_NONE];
|
||||
} aom_partition_features_none_t;
|
||||
|
||||
/*!\brief Features pass to the external model to make partition decisions.
|
||||
* Specifically, features collected after SPLIT partition.
|
||||
*/
|
||||
typedef struct aom_partition_features_split {
|
||||
/*! features to determine termination of partition */
|
||||
float f_terminate[AOM_EXT_PART_SIZE_TERM_SPLIT];
|
||||
/*! features to determine pruning rect partition */
|
||||
float f_prune_rect[AOM_EXT_PART_SIZE_PRUNE_RECT];
|
||||
} aom_partition_features_split_t;
|
||||
|
||||
/*!\brief Features pass to the external model to make partition decisions.
|
||||
* Specifically, features collected after RECTANGULAR partition.
|
||||
*/
|
||||
typedef struct aom_partition_features_rect {
|
||||
/*! features to determine pruning AB partition */
|
||||
float f[AOM_EXT_PART_SIZE_PRUNE_AB];
|
||||
} aom_partition_features_rect_t;
|
||||
|
||||
/*!\brief Features pass to the external model to make partition decisions.
|
||||
* Specifically, features collected after AB partition: HORZ_A, HORZ_B, VERT_A,
|
||||
* VERT_B.
|
||||
*/
|
||||
typedef struct aom_partition_features_ab {
|
||||
/*! features to determine pruning 4-way partition */
|
||||
float f[AOM_EXT_PART_SIZE_PRUNE_4_WAY];
|
||||
} aom_partition_features_ab_t;
|
||||
|
||||
/*!\brief Feature id to tell the external model the current stage in partition
|
||||
* pruning and what features to use to make decisions accordingly.
|
||||
*/
|
||||
typedef enum {
|
||||
AOM_EXT_PART_FEATURE_BEFORE_NONE,
|
||||
AOM_EXT_PART_FEATURE_BEFORE_NONE_PART2,
|
||||
AOM_EXT_PART_FEATURE_AFTER_NONE,
|
||||
AOM_EXT_PART_FEATURE_AFTER_NONE_PART2,
|
||||
AOM_EXT_PART_FEATURE_AFTER_SPLIT,
|
||||
AOM_EXT_PART_FEATURE_AFTER_SPLIT_PART2,
|
||||
AOM_EXT_PART_FEATURE_AFTER_RECT,
|
||||
AOM_EXT_PART_FEATURE_AFTER_AB
|
||||
} AOM_EXT_PART_FEATURE_ID;
|
||||
|
||||
/*!\brief Features collected from the tpl process.
|
||||
*
|
||||
* The tpl process collects information that help measure the inter-frame
|
||||
* dependency.
|
||||
* The tpl process is computed in the unit of tpl_bsize_1d (16x16).
|
||||
* Therefore, the max number of units inside a superblock is
|
||||
* 128x128 / (16x16) = 64. Change it if the tpl process changes.
|
||||
*/
|
||||
typedef struct aom_sb_tpl_features {
|
||||
int available; ///< If tpl stats are available
|
||||
int tpl_unit_length; ///< The block length of tpl process
|
||||
int num_units; ///< The number of units inside the current superblock
|
||||
int64_t intra_cost[64]; ///< The intra cost of each unit
|
||||
int64_t inter_cost[64]; ///< The inter cost of each unit
|
||||
int64_t mc_dep_cost[64]; ///< The motion compensated dependency cost
|
||||
} aom_sb_tpl_features_t;
|
||||
|
||||
/*!\brief Features collected from the simple motion process.
|
||||
*
|
||||
* The simple motion process collects information by applying motion compensated
|
||||
* prediction on each block.
|
||||
* The block size is 16x16, which could be changed. If it is changed, update
|
||||
* comments and the array size here.
|
||||
*/
|
||||
typedef struct aom_sb_simple_motion_features {
|
||||
int unit_length; ///< The block length of the simple motion process
|
||||
int num_units; ///< The number of units inside the current superblock
|
||||
int block_sse[64]; ///< Sum of squared error of each unit
|
||||
int block_var[64]; ///< Variance of each unit
|
||||
} aom_sb_simple_motion_features_t;
|
||||
|
||||
/*!\brief Features of each super block.
|
||||
*
|
||||
* Features collected for each super block before partition search.
|
||||
*/
|
||||
typedef struct aom_sb_features {
|
||||
/*! Features from motion search */
|
||||
aom_sb_simple_motion_features_t motion_features;
|
||||
/*! Features from tpl process */
|
||||
aom_sb_tpl_features_t tpl_features;
|
||||
} aom_sb_features_t;
|
||||
|
||||
/*!\brief Features pass to the external model to make partition decisions.
|
||||
*
|
||||
* The encoder sends these features to the external model through
|
||||
* "func()" defined in .....
|
||||
*
|
||||
* NOTE: new member variables may be added to this structure in the future.
|
||||
* Once new features are finalized, bump the major version of libaom.
|
||||
*/
|
||||
typedef struct aom_partition_features {
|
||||
// Features for the current supervised multi-stage ML model.
|
||||
/*! Feature ID to indicate active features */
|
||||
AOM_EXT_PART_FEATURE_ID id;
|
||||
/*! Features collected before NONE partition */
|
||||
aom_partition_features_before_none_t before_part_none;
|
||||
/*! Features collected after NONE partition */
|
||||
aom_partition_features_none_t after_part_none;
|
||||
/*! Features collected after SPLIT partition */
|
||||
aom_partition_features_split_t after_part_split;
|
||||
/*! Features collected after RECTANGULAR partition */
|
||||
aom_partition_features_rect_t after_part_rect;
|
||||
/*! Features collected after AB partition */
|
||||
aom_partition_features_ab_t after_part_ab;
|
||||
|
||||
// Features for a new ML model.
|
||||
aom_sb_features_t sb_features; ///< Features collected for the super block
|
||||
int mi_row; ///< Mi_row position of the block
|
||||
int mi_col; ///< Mi_col position of the block
|
||||
int frame_width; ///< Frame width
|
||||
int frame_height; ///< Frame height
|
||||
int block_size; ///< As "BLOCK_SIZE" in av1/common/enums.h
|
||||
/*!
|
||||
* Valid partition types. A bitmask is used. "1" represents the
|
||||
* corresponding type is vaild. The bitmask follows the enum order for
|
||||
* PARTITION_TYPE in "enums.h" to represent one partition type at a bit.
|
||||
* For example, 0x01 stands for only PARTITION_NONE is valid,
|
||||
* 0x09 (00...001001) stands for PARTITION_NONE and PARTITION_SPLIT are valid.
|
||||
*/
|
||||
int valid_partition_types;
|
||||
int update_type; ///< Frame update type, defined in ratectrl.h
|
||||
int qindex; ///< Quantization index, range: [0, 255]
|
||||
int rdmult; ///< Rate-distortion multiplier
|
||||
int pyramid_level; ///< The level of this frame in the hierarchical structure
|
||||
int has_above_block; ///< Has above neighbor block
|
||||
int above_block_width; ///< Width of the above block, -1 if not exist
|
||||
int above_block_height; ///< Height of the above block, -1 if not exist
|
||||
int has_left_block; ///< Has left neighbor block
|
||||
int left_block_width; ///< Width of the left block, -1 if not exist
|
||||
int left_block_height; ///< Height of the left block, -1 if not exist
|
||||
/*!
|
||||
* The following parameters are collected from applying simple motion search.
|
||||
* Sum of squared error (SSE) and variance of motion compensated residual
|
||||
* are good indicators of block partitioning.
|
||||
* If a block is a square, we also apply motion search for its 4 sub blocks.
|
||||
* If not a square, their values are -1.
|
||||
* If a block is able to split horizontally, we apply motion search and get
|
||||
* stats for horizontal blocks. If not, their values are -1.
|
||||
* If a block is able to split vertically, we apply motion search and get
|
||||
* stats for vertical blocks. If not, their values are -1.
|
||||
*/
|
||||
unsigned int block_sse; ///< SSE of motion compensated residual
|
||||
unsigned int block_var; ///< Variance of motion compensated residual
|
||||
unsigned int sub_block_sse[4]; ///< SSE of sub blocks.
|
||||
unsigned int sub_block_var[4]; ///< Variance of sub blocks.
|
||||
unsigned int horz_block_sse[2]; ///< SSE of horz sub blocks
|
||||
unsigned int horz_block_var[2]; ///< Variance of horz sub blocks
|
||||
unsigned int vert_block_sse[2]; ///< SSE of vert sub blocks
|
||||
unsigned int vert_block_var[2]; ///< Variance of vert sub blocks
|
||||
/*!
|
||||
* The following parameters are calculated from tpl model.
|
||||
* If tpl model is not available, their values are -1.
|
||||
*/
|
||||
int64_t tpl_intra_cost; ///< Intra cost, ref to "TplDepStats" in tpl_model.h
|
||||
int64_t tpl_inter_cost; ///< Inter cost in tpl model
|
||||
int64_t tpl_mc_dep_cost; ///< Motion compensated dependency cost in tpl model
|
||||
} aom_partition_features_t;
|
||||
|
||||
/*!\brief Partition decisions received from the external model.
|
||||
*
|
||||
* The encoder receives partition decisions and encodes the superblock
|
||||
* with the given partition type.
|
||||
* The encoder receives it from "func()" define in ....
|
||||
*
|
||||
* NOTE: new member variables may be added to this structure in the future.
|
||||
* Once new features are finalized, bump the major version of libaom.
|
||||
*/
|
||||
typedef struct aom_partition_decision {
|
||||
// Decisions for directly set partition types
|
||||
int is_final_decision; ///< The flag whether it's the final decision
|
||||
int num_nodes; ///< The number of leaf nodes
|
||||
int partition_decision[2048]; ///< Partition decisions
|
||||
int current_decision; ///< Partition decision for the current block
|
||||
|
||||
// Decisions for partition type pruning
|
||||
int terminate_partition_search; ///< Terminate further partition search
|
||||
int partition_none_allowed; ///< Allow partition none type
|
||||
int partition_rect_allowed[2]; ///< Allow rectangular partitions
|
||||
int do_rectangular_split; ///< Try rectangular split partition
|
||||
int do_square_split; ///< Try square split partition
|
||||
int prune_rect_part[2]; ///< Prune rectangular partition
|
||||
int horza_partition_allowed; ///< Allow HORZ_A partitioin
|
||||
int horzb_partition_allowed; ///< Allow HORZ_B partitioin
|
||||
int verta_partition_allowed; ///< Allow VERT_A partitioin
|
||||
int vertb_partition_allowed; ///< Allow VERT_B partitioin
|
||||
int partition_horz4_allowed; ///< Allow HORZ4 partition
|
||||
int partition_vert4_allowed; ///< Allow VERT4 partition
|
||||
} aom_partition_decision_t;
|
||||
|
||||
/*!\brief Encoding stats for the given partition decision.
|
||||
*
|
||||
* The encoding stats collected by encoding the superblock with the
|
||||
* given partition types.
|
||||
* The encoder sends the stats to the external model for training
|
||||
* or inference though "func()" defined in ....
|
||||
*/
|
||||
typedef struct aom_partition_stats {
|
||||
int rate; ///< Rate cost of the block
|
||||
int64_t dist; ///< Distortion of the block
|
||||
int64_t rdcost; ///< Rate-distortion cost of the block
|
||||
} aom_partition_stats_t;
|
||||
|
||||
/*!\brief Enum for return status.
|
||||
*/
|
||||
typedef enum aom_ext_part_status {
|
||||
AOM_EXT_PART_OK = 0, ///< Status of success
|
||||
AOM_EXT_PART_ERROR = 1, ///< Status of failure
|
||||
AOM_EXT_PART_TEST = 2, ///< Status used for tests
|
||||
} aom_ext_part_status_t;
|
||||
|
||||
/*!\brief Callback of creating an external partition model.
|
||||
*
|
||||
* The callback is invoked by the encoder to create an external partition
|
||||
* model.
|
||||
*
|
||||
* \param[in] priv Callback's private data
|
||||
* \param[in] part_config Config information pointer for model creation
|
||||
* \param[out] ext_part_model Pointer to the model
|
||||
*/
|
||||
typedef aom_ext_part_status_t (*aom_ext_part_create_model_fn_t)(
|
||||
void *priv, const aom_ext_part_config_t *part_config,
|
||||
aom_ext_part_model_t *ext_part_model);
|
||||
|
||||
/*!\brief Callback of sending features to the external partition model.
|
||||
*
|
||||
* The callback is invoked by the encoder to send features to the external
|
||||
* partition model.
|
||||
*
|
||||
* \param[in] ext_part_model The external model
|
||||
* \param[in] part_features Pointer to the features
|
||||
*/
|
||||
typedef aom_ext_part_status_t (*aom_ext_part_send_features_fn_t)(
|
||||
aom_ext_part_model_t ext_part_model,
|
||||
const aom_partition_features_t *part_features);
|
||||
|
||||
/*!\brief Callback of receiving partition decisions from the external
|
||||
* partition model.
|
||||
*
|
||||
* The callback is invoked by the encoder to receive partition decisions from
|
||||
* the external partition model.
|
||||
*
|
||||
* \param[in] ext_part_model The external model
|
||||
* \param[in] ext_part_decision Pointer to the partition decisions
|
||||
*/
|
||||
typedef aom_ext_part_status_t (*aom_ext_part_get_decision_fn_t)(
|
||||
aom_ext_part_model_t ext_part_model,
|
||||
aom_partition_decision_t *ext_part_decision);
|
||||
|
||||
/*!\brief Callback of sending stats to the external partition model.
|
||||
*
|
||||
* The callback is invoked by the encoder to send encoding stats to
|
||||
* the external partition model.
|
||||
*
|
||||
* \param[in] ext_part_model The external model
|
||||
* \param[in] ext_part_stats Pointer to the encoding stats
|
||||
*/
|
||||
typedef aom_ext_part_status_t (*aom_ext_part_send_partition_stats_fn_t)(
|
||||
aom_ext_part_model_t ext_part_model,
|
||||
const aom_partition_stats_t *ext_part_stats);
|
||||
|
||||
/*!\brief Callback of deleting the external partition model.
|
||||
*
|
||||
* The callback is invoked by the encoder to delete the external partition
|
||||
* model.
|
||||
*
|
||||
* \param[in] ext_part_model The external model
|
||||
*/
|
||||
typedef aom_ext_part_status_t (*aom_ext_part_delete_model_fn_t)(
|
||||
aom_ext_part_model_t ext_part_model);
|
||||
|
||||
/*!\brief Callback function set for external partition model.
|
||||
*
|
||||
* Uses can enable external partition model by registering a set of
|
||||
* callback functions with the flag: AV1E_SET_EXTERNAL_PARTITION_MODEL
|
||||
*/
|
||||
typedef struct aom_ext_part_funcs {
|
||||
/*!
|
||||
* Create an external partition model.
|
||||
*/
|
||||
aom_ext_part_create_model_fn_t create_model;
|
||||
|
||||
/*!
|
||||
* Send features to the external partition model to make partition decisions.
|
||||
*/
|
||||
aom_ext_part_send_features_fn_t send_features;
|
||||
|
||||
/*!
|
||||
* Get partition decisions from the external partition model.
|
||||
*/
|
||||
aom_ext_part_get_decision_fn_t get_partition_decision;
|
||||
|
||||
/*!
|
||||
* Send stats of the current partition to the external model.
|
||||
*/
|
||||
aom_ext_part_send_partition_stats_fn_t send_partition_stats;
|
||||
|
||||
/*!
|
||||
* Delete the external partition model.
|
||||
*/
|
||||
aom_ext_part_delete_model_fn_t delete_model;
|
||||
|
||||
/*!
|
||||
* The decision mode of the model.
|
||||
*/
|
||||
aom_ext_part_decision_mode_t decision_mode;
|
||||
|
||||
/*!
|
||||
* Private data for the external partition model.
|
||||
*/
|
||||
void *priv;
|
||||
} aom_ext_part_funcs_t;
|
||||
|
||||
/*!@} - end defgroup aom_encoder*/
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif // AOM_AOM_AOM_EXTERNAL_PARTITION_H_
|
||||
@@ -1,84 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
|
||||
#ifndef AOM_AOM_AOM_FRAME_BUFFER_H_
|
||||
#define AOM_AOM_AOM_FRAME_BUFFER_H_
|
||||
|
||||
/*!\file
|
||||
* \brief Describes the decoder external frame buffer interface.
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
|
||||
/*!\brief The maximum number of work buffers used by libaom.
|
||||
* Support maximum 4 threads to decode video in parallel.
|
||||
* Each thread will use one work buffer.
|
||||
* TODO(hkuang): Add support to set number of worker threads dynamically.
|
||||
*/
|
||||
#define AOM_MAXIMUM_WORK_BUFFERS 8
|
||||
|
||||
/*!\brief The maximum number of reference buffers that a AV1 encoder may use.
|
||||
*/
|
||||
#define AOM_MAXIMUM_REF_BUFFERS 8
|
||||
|
||||
/*!\brief External frame buffer
|
||||
*
|
||||
* This structure holds allocated frame buffers used by the decoder.
|
||||
*/
|
||||
typedef struct aom_codec_frame_buffer {
|
||||
uint8_t *data; /**< Pointer to the data buffer */
|
||||
size_t size; /**< Size of data in bytes */
|
||||
void *priv; /**< Frame's private data */
|
||||
} aom_codec_frame_buffer_t;
|
||||
|
||||
/*!\brief get frame buffer callback prototype
|
||||
*
|
||||
* This callback is invoked by the decoder to retrieve data for the frame
|
||||
* buffer in order for the decode call to complete. The callback must
|
||||
* allocate at least min_size in bytes and assign it to fb->data. The callback
|
||||
* must zero out all the data allocated. Then the callback must set fb->size
|
||||
* to the allocated size. The application does not need to align the allocated
|
||||
* data. The callback is triggered when the decoder needs a frame buffer to
|
||||
* decode a compressed image into. This function may be called more than once
|
||||
* for every call to aom_codec_decode. The application may set fb->priv to
|
||||
* some data which will be passed back in the aom_image_t and the release
|
||||
* function call. |fb| is guaranteed to not be NULL. On success the callback
|
||||
* must return 0. Any failure the callback must return a value less than 0.
|
||||
*
|
||||
* \param[in] priv Callback's private data
|
||||
* \param[in] min_size Size in bytes needed by the buffer
|
||||
* \param[in,out] fb Pointer to aom_codec_frame_buffer_t
|
||||
*/
|
||||
typedef int (*aom_get_frame_buffer_cb_fn_t)(void *priv, size_t min_size,
|
||||
aom_codec_frame_buffer_t *fb);
|
||||
|
||||
/*!\brief release frame buffer callback prototype
|
||||
*
|
||||
* This callback is invoked by the decoder when the frame buffer is not
|
||||
* referenced by any other buffers. |fb| is guaranteed to not be NULL. On
|
||||
* success the callback must return 0. Any failure the callback must return
|
||||
* a value less than 0.
|
||||
*
|
||||
* \param[in] priv Callback's private data
|
||||
* \param[in] fb Pointer to aom_codec_frame_buffer_t
|
||||
*/
|
||||
typedef int (*aom_release_frame_buffer_cb_fn_t)(void *priv,
|
||||
aom_codec_frame_buffer_t *fb);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif // AOM_AOM_AOM_FRAME_BUFFER_H_
|
||||
@@ -1,448 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
|
||||
/*!\file
|
||||
* \brief Describes the aom image descriptor and associated operations
|
||||
*
|
||||
*/
|
||||
#ifndef AOM_AOM_AOM_IMAGE_H_
|
||||
#define AOM_AOM_AOM_IMAGE_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
|
||||
/*!\brief Current ABI version number
|
||||
*
|
||||
* \internal
|
||||
* If this file is altered in any way that changes the ABI, this value
|
||||
* must be bumped. Examples include, but are not limited to, changing
|
||||
* types, removing or reassigning enums, adding/removing/rearranging
|
||||
* fields to structures
|
||||
*/
|
||||
#define AOM_IMAGE_ABI_VERSION (9) /**<\hideinitializer*/
|
||||
|
||||
#define AOM_IMG_FMT_PLANAR 0x100 /**< Image is a planar format. */
|
||||
#define AOM_IMG_FMT_UV_FLIP 0x200 /**< V plane precedes U in memory. */
|
||||
/** 0x400 used to signal alpha channel, skipping for backwards compatibility. */
|
||||
#define AOM_IMG_FMT_HIGHBITDEPTH 0x800 /**< Image uses 16bit framebuffer. */
|
||||
|
||||
/*!\brief List of supported image formats */
|
||||
typedef enum aom_img_fmt {
|
||||
AOM_IMG_FMT_NONE,
|
||||
AOM_IMG_FMT_YV12 =
|
||||
AOM_IMG_FMT_PLANAR | AOM_IMG_FMT_UV_FLIP | 1, /**< planar YVU */
|
||||
AOM_IMG_FMT_I420 = AOM_IMG_FMT_PLANAR | 2,
|
||||
AOM_IMG_FMT_AOMYV12 = AOM_IMG_FMT_PLANAR | AOM_IMG_FMT_UV_FLIP |
|
||||
3, /** < planar 4:2:0 format with aom color space */
|
||||
AOM_IMG_FMT_AOMI420 = AOM_IMG_FMT_PLANAR | 4,
|
||||
AOM_IMG_FMT_I422 = AOM_IMG_FMT_PLANAR | 5,
|
||||
AOM_IMG_FMT_I444 = AOM_IMG_FMT_PLANAR | 6,
|
||||
/*!\brief Allows detection of the presence of AOM_IMG_FMT_NV12 at compile time.
|
||||
*/
|
||||
#define AOM_HAVE_IMG_FMT_NV12 1
|
||||
AOM_IMG_FMT_NV12 =
|
||||
AOM_IMG_FMT_PLANAR | 7, /**< 4:2:0 with U and V interleaved */
|
||||
AOM_IMG_FMT_I42016 = AOM_IMG_FMT_I420 | AOM_IMG_FMT_HIGHBITDEPTH,
|
||||
AOM_IMG_FMT_YV1216 = AOM_IMG_FMT_YV12 | AOM_IMG_FMT_HIGHBITDEPTH,
|
||||
AOM_IMG_FMT_I42216 = AOM_IMG_FMT_I422 | AOM_IMG_FMT_HIGHBITDEPTH,
|
||||
AOM_IMG_FMT_I44416 = AOM_IMG_FMT_I444 | AOM_IMG_FMT_HIGHBITDEPTH,
|
||||
} aom_img_fmt_t; /**< alias for enum aom_img_fmt */
|
||||
|
||||
/*!\brief List of supported color primaries */
|
||||
typedef enum aom_color_primaries {
|
||||
AOM_CICP_CP_RESERVED_0 = 0, /**< For future use */
|
||||
AOM_CICP_CP_BT_709 = 1, /**< BT.709 */
|
||||
AOM_CICP_CP_UNSPECIFIED = 2, /**< Unspecified */
|
||||
AOM_CICP_CP_RESERVED_3 = 3, /**< For future use */
|
||||
AOM_CICP_CP_BT_470_M = 4, /**< BT.470 System M (historical) */
|
||||
AOM_CICP_CP_BT_470_B_G = 5, /**< BT.470 System B, G (historical) */
|
||||
AOM_CICP_CP_BT_601 = 6, /**< BT.601 */
|
||||
AOM_CICP_CP_SMPTE_240 = 7, /**< SMPTE 240 */
|
||||
AOM_CICP_CP_GENERIC_FILM =
|
||||
8, /**< Generic film (color filters using illuminant C) */
|
||||
AOM_CICP_CP_BT_2020 = 9, /**< BT.2020, BT.2100 */
|
||||
AOM_CICP_CP_XYZ = 10, /**< SMPTE 428 (CIE 1921 XYZ) */
|
||||
AOM_CICP_CP_SMPTE_431 = 11, /**< SMPTE RP 431-2 */
|
||||
AOM_CICP_CP_SMPTE_432 = 12, /**< SMPTE EG 432-1 */
|
||||
AOM_CICP_CP_RESERVED_13 = 13, /**< For future use (values 13 - 21) */
|
||||
AOM_CICP_CP_EBU_3213 = 22, /**< EBU Tech. 3213-E */
|
||||
AOM_CICP_CP_RESERVED_23 = 23 /**< For future use (values 23 - 255) */
|
||||
} aom_color_primaries_t; /**< alias for enum aom_color_primaries */
|
||||
|
||||
/*!\brief List of supported transfer functions */
|
||||
typedef enum aom_transfer_characteristics {
|
||||
AOM_CICP_TC_RESERVED_0 = 0, /**< For future use */
|
||||
AOM_CICP_TC_BT_709 = 1, /**< BT.709 */
|
||||
AOM_CICP_TC_UNSPECIFIED = 2, /**< Unspecified */
|
||||
AOM_CICP_TC_RESERVED_3 = 3, /**< For future use */
|
||||
AOM_CICP_TC_BT_470_M = 4, /**< BT.470 System M (historical) */
|
||||
AOM_CICP_TC_BT_470_B_G = 5, /**< BT.470 System B, G (historical) */
|
||||
AOM_CICP_TC_BT_601 = 6, /**< BT.601 */
|
||||
AOM_CICP_TC_SMPTE_240 = 7, /**< SMPTE 240 M */
|
||||
AOM_CICP_TC_LINEAR = 8, /**< Linear */
|
||||
AOM_CICP_TC_LOG_100 = 9, /**< Logarithmic (100 : 1 range) */
|
||||
AOM_CICP_TC_LOG_100_SQRT10 =
|
||||
10, /**< Logarithmic (100 * Sqrt(10) : 1 range) */
|
||||
AOM_CICP_TC_IEC_61966 = 11, /**< IEC 61966-2-4 */
|
||||
AOM_CICP_TC_BT_1361 = 12, /**< BT.1361 */
|
||||
AOM_CICP_TC_SRGB = 13, /**< sRGB or sYCC*/
|
||||
AOM_CICP_TC_BT_2020_10_BIT = 14, /**< BT.2020 10-bit systems */
|
||||
AOM_CICP_TC_BT_2020_12_BIT = 15, /**< BT.2020 12-bit systems */
|
||||
AOM_CICP_TC_SMPTE_2084 = 16, /**< SMPTE ST 2084, ITU BT.2100 PQ */
|
||||
AOM_CICP_TC_SMPTE_428 = 17, /**< SMPTE ST 428 */
|
||||
AOM_CICP_TC_HLG = 18, /**< BT.2100 HLG, ARIB STD-B67 */
|
||||
AOM_CICP_TC_RESERVED_19 = 19 /**< For future use (values 19-255) */
|
||||
} aom_transfer_characteristics_t; /**< alias for enum aom_transfer_function */
|
||||
|
||||
/*!\brief List of supported matrix coefficients */
|
||||
typedef enum aom_matrix_coefficients {
|
||||
AOM_CICP_MC_IDENTITY = 0, /**< Identity matrix */
|
||||
AOM_CICP_MC_BT_709 = 1, /**< BT.709 */
|
||||
AOM_CICP_MC_UNSPECIFIED = 2, /**< Unspecified */
|
||||
AOM_CICP_MC_RESERVED_3 = 3, /**< For future use */
|
||||
AOM_CICP_MC_FCC = 4, /**< US FCC 73.628 */
|
||||
AOM_CICP_MC_BT_470_B_G = 5, /**< BT.470 System B, G (historical) */
|
||||
AOM_CICP_MC_BT_601 = 6, /**< BT.601 */
|
||||
AOM_CICP_MC_SMPTE_240 = 7, /**< SMPTE 240 M */
|
||||
AOM_CICP_MC_SMPTE_YCGCO = 8, /**< YCgCo */
|
||||
AOM_CICP_MC_BT_2020_NCL =
|
||||
9, /**< BT.2020 non-constant luminance, BT.2100 YCbCr */
|
||||
AOM_CICP_MC_BT_2020_CL = 10, /**< BT.2020 constant luminance */
|
||||
AOM_CICP_MC_SMPTE_2085 = 11, /**< SMPTE ST 2085 YDzDx */
|
||||
AOM_CICP_MC_CHROMAT_NCL =
|
||||
12, /**< Chromaticity-derived non-constant luminance */
|
||||
AOM_CICP_MC_CHROMAT_CL = 13, /**< Chromaticity-derived constant luminance */
|
||||
AOM_CICP_MC_ICTCP = 14, /**< BT.2100 ICtCp */
|
||||
AOM_CICP_MC_RESERVED_15 = 15 /**< For future use (values 15-255) */
|
||||
} aom_matrix_coefficients_t;
|
||||
|
||||
/*!\brief List of supported color range */
|
||||
typedef enum aom_color_range {
|
||||
AOM_CR_STUDIO_RANGE = 0, /**<- Y [16..235], UV [16..240] (bit depth 8) */
|
||||
/**<- Y [64..940], UV [64..960] (bit depth 10) */
|
||||
/**<- Y [256..3760], UV [256..3840] (bit depth 12) */
|
||||
AOM_CR_FULL_RANGE = 1 /**<- YUV/RGB [0..255] (bit depth 8) */
|
||||
/**<- YUV/RGB [0..1023] (bit depth 10) */
|
||||
/**<- YUV/RGB [0..4095] (bit depth 12) */
|
||||
} aom_color_range_t; /**< alias for enum aom_color_range */
|
||||
|
||||
/*!\brief List of chroma sample positions */
|
||||
typedef enum aom_chroma_sample_position {
|
||||
AOM_CSP_UNKNOWN = 0, /**< Unknown */
|
||||
AOM_CSP_VERTICAL = 1, /**< Horizontally co-located with luma(0, 0)*/
|
||||
/**< sample, between two vertical samples */
|
||||
AOM_CSP_COLOCATED = 2, /**< Co-located with luma(0, 0) sample */
|
||||
AOM_CSP_RESERVED = 3 /**< Reserved value */
|
||||
} aom_chroma_sample_position_t; /**< alias for enum aom_transfer_function */
|
||||
|
||||
/*!\brief List of insert flags for Metadata
|
||||
*
|
||||
* These flags control how the library treats metadata during encode.
|
||||
*
|
||||
* While encoding, when metadata is added to an aom_image via
|
||||
* aom_img_add_metadata(), the flag passed along with the metadata will
|
||||
* determine where the metadata OBU will be placed in the encoded OBU stream.
|
||||
* Metadata will be emitted into the output stream within the next temporal unit
|
||||
* if it satisfies the specified insertion flag.
|
||||
*
|
||||
* During decoding, when the library encounters a metadata OBU, it is always
|
||||
* flagged as AOM_MIF_ANY_FRAME and emitted with the next output aom_image.
|
||||
*/
|
||||
typedef enum aom_metadata_insert_flags {
|
||||
AOM_MIF_NON_KEY_FRAME = 0, /**< Adds metadata if it's not keyframe */
|
||||
AOM_MIF_KEY_FRAME = 1, /**< Adds metadata only if it's a keyframe */
|
||||
AOM_MIF_ANY_FRAME = 2 /**< Adds metadata to any type of frame */
|
||||
} aom_metadata_insert_flags_t;
|
||||
|
||||
/*!\brief Array of aom_metadata structs for an image. */
|
||||
typedef struct aom_metadata_array aom_metadata_array_t;
|
||||
|
||||
/*!\brief Metadata payload. */
|
||||
typedef struct aom_metadata {
|
||||
uint32_t type; /**< Metadata type */
|
||||
uint8_t *payload; /**< Metadata payload data */
|
||||
size_t sz; /**< Metadata payload size */
|
||||
aom_metadata_insert_flags_t insert_flag; /**< Metadata insertion flag */
|
||||
} aom_metadata_t;
|
||||
|
||||
/**\brief Image Descriptor */
|
||||
typedef struct aom_image {
|
||||
aom_img_fmt_t fmt; /**< Image Format */
|
||||
aom_color_primaries_t cp; /**< CICP Color Primaries */
|
||||
aom_transfer_characteristics_t tc; /**< CICP Transfer Characteristics */
|
||||
aom_matrix_coefficients_t mc; /**< CICP Matrix Coefficients */
|
||||
int monochrome; /**< Whether image is monochrome */
|
||||
aom_chroma_sample_position_t csp; /**< chroma sample position */
|
||||
aom_color_range_t range; /**< Color Range */
|
||||
|
||||
/* Image storage dimensions */
|
||||
unsigned int w; /**< Stored image width */
|
||||
unsigned int h; /**< Stored image height */
|
||||
unsigned int bit_depth; /**< Stored image bit-depth */
|
||||
|
||||
/* Image display dimensions */
|
||||
unsigned int d_w; /**< Displayed image width */
|
||||
unsigned int d_h; /**< Displayed image height */
|
||||
|
||||
/* Image intended rendering dimensions */
|
||||
unsigned int r_w; /**< Intended rendering image width */
|
||||
unsigned int r_h; /**< Intended rendering image height */
|
||||
|
||||
/* Chroma subsampling info */
|
||||
unsigned int x_chroma_shift; /**< subsampling order, X */
|
||||
unsigned int y_chroma_shift; /**< subsampling order, Y */
|
||||
|
||||
/* Image data pointers. */
|
||||
#define AOM_PLANE_PACKED 0 /**< To be used for all packed formats */
|
||||
#define AOM_PLANE_Y 0 /**< Y (Luminance) plane */
|
||||
#define AOM_PLANE_U 1 /**< U (Chroma) plane */
|
||||
#define AOM_PLANE_V 2 /**< V (Chroma) plane */
|
||||
/* planes[AOM_PLANE_V] = NULL and stride[AOM_PLANE_V] = 0 when fmt ==
|
||||
* AOM_IMG_FMT_NV12 */
|
||||
unsigned char *planes[3]; /**< pointer to the top left pixel for each plane */
|
||||
int stride[3]; /**< stride between rows for each plane */
|
||||
size_t sz; /**< data size */
|
||||
|
||||
int bps; /**< bits per sample (for packed formats) */
|
||||
|
||||
int temporal_id; /**< Temporal layer Id of image */
|
||||
int spatial_id; /**< Spatial layer Id of image */
|
||||
|
||||
/*!\brief The following member may be set by the application to associate
|
||||
* data with this image.
|
||||
*/
|
||||
void *user_priv;
|
||||
|
||||
/* The following members should be treated as private. */
|
||||
unsigned char *img_data; /**< private */
|
||||
int img_data_owner; /**< private */
|
||||
int self_allocd; /**< private */
|
||||
|
||||
aom_metadata_array_t
|
||||
*metadata; /**< Metadata payloads associated with the image. */
|
||||
|
||||
void *fb_priv; /**< Frame buffer data associated with the image. */
|
||||
} aom_image_t; /**< alias for struct aom_image */
|
||||
|
||||
/*!\brief Open a descriptor, allocating storage for the underlying image
|
||||
*
|
||||
* Returns a descriptor for storing an image of the given format. The
|
||||
* storage for the image is allocated on the heap.
|
||||
*
|
||||
* \param[in] img Pointer to storage for descriptor. If this parameter
|
||||
* is NULL, the storage for the descriptor will be
|
||||
* allocated on the heap.
|
||||
* \param[in] fmt Format for the image
|
||||
* \param[in] d_w Width of the image
|
||||
* \param[in] d_h Height of the image
|
||||
* \param[in] align Alignment, in bytes, of the image buffer and
|
||||
* each row in the image (stride).
|
||||
*
|
||||
* \return Returns a pointer to the initialized image descriptor. If the img
|
||||
* parameter is non-null, the value of the img parameter will be
|
||||
* returned.
|
||||
*/
|
||||
aom_image_t *aom_img_alloc(aom_image_t *img, aom_img_fmt_t fmt,
|
||||
unsigned int d_w, unsigned int d_h,
|
||||
unsigned int align);
|
||||
|
||||
/*!\brief Open a descriptor, using existing storage for the underlying image
|
||||
*
|
||||
* Returns a descriptor for storing an image of the given format. The
|
||||
* storage for the image has been allocated elsewhere, and a descriptor is
|
||||
* desired to "wrap" that storage.
|
||||
*
|
||||
* \param[in] img Pointer to storage for descriptor. If this parameter
|
||||
* is NULL, the storage for the descriptor will be
|
||||
* allocated on the heap.
|
||||
* \param[in] fmt Format for the image
|
||||
* \param[in] d_w Width of the image
|
||||
* \param[in] d_h Height of the image
|
||||
* \param[in] align Alignment, in bytes, of each row in the image
|
||||
* (stride).
|
||||
* \param[in] img_data Storage to use for the image
|
||||
*
|
||||
* \return Returns a pointer to the initialized image descriptor. If the img
|
||||
* parameter is non-null, the value of the img parameter will be
|
||||
* returned.
|
||||
*/
|
||||
aom_image_t *aom_img_wrap(aom_image_t *img, aom_img_fmt_t fmt, unsigned int d_w,
|
||||
unsigned int d_h, unsigned int align,
|
||||
unsigned char *img_data);
|
||||
|
||||
/*!\brief Open a descriptor, allocating storage for the underlying image with a
|
||||
* border
|
||||
*
|
||||
* Returns a descriptor for storing an image of the given format and its
|
||||
* borders. The storage for the image is allocated on the heap.
|
||||
*
|
||||
* \param[in] img Pointer to storage for descriptor. If this parameter
|
||||
* is NULL, the storage for the descriptor will be
|
||||
* allocated on the heap.
|
||||
* \param[in] fmt Format for the image
|
||||
* \param[in] d_w Width of the image
|
||||
* \param[in] d_h Height of the image
|
||||
* \param[in] align Alignment, in bytes, of the image buffer and
|
||||
* each row in the image (stride).
|
||||
* \param[in] size_align Alignment, in pixels, of the image width and height.
|
||||
* \param[in] border A border that is padded on four sides of the image.
|
||||
*
|
||||
* \return Returns a pointer to the initialized image descriptor. If the img
|
||||
* parameter is non-null, the value of the img parameter will be
|
||||
* returned.
|
||||
*/
|
||||
aom_image_t *aom_img_alloc_with_border(aom_image_t *img, aom_img_fmt_t fmt,
|
||||
unsigned int d_w, unsigned int d_h,
|
||||
unsigned int align,
|
||||
unsigned int size_align,
|
||||
unsigned int border);
|
||||
|
||||
/*!\brief Set the rectangle identifying the displayed portion of the image
|
||||
*
|
||||
* Updates the displayed rectangle (aka viewport) on the image surface to
|
||||
* match the specified coordinates and size. Specifically, sets img->d_w,
|
||||
* img->d_h, and elements of the img->planes[] array.
|
||||
*
|
||||
* \param[in] img Image descriptor
|
||||
* \param[in] x leftmost column
|
||||
* \param[in] y topmost row
|
||||
* \param[in] w width
|
||||
* \param[in] h height
|
||||
* \param[in] border A border that is padded on four sides of the image.
|
||||
*
|
||||
* \return 0 if the requested rectangle is valid, nonzero (-1) otherwise.
|
||||
*/
|
||||
int aom_img_set_rect(aom_image_t *img, unsigned int x, unsigned int y,
|
||||
unsigned int w, unsigned int h, unsigned int border);
|
||||
|
||||
/*!\brief Flip the image vertically (top for bottom)
|
||||
*
|
||||
* Adjusts the image descriptor's pointers and strides to make the image
|
||||
* be referenced upside-down.
|
||||
*
|
||||
* \param[in] img Image descriptor
|
||||
*/
|
||||
void aom_img_flip(aom_image_t *img);
|
||||
|
||||
/*!\brief Close an image descriptor
|
||||
*
|
||||
* Frees all allocated storage associated with an image descriptor.
|
||||
*
|
||||
* \param[in] img Image descriptor
|
||||
*/
|
||||
void aom_img_free(aom_image_t *img);
|
||||
|
||||
/*!\brief Get the width of a plane
|
||||
*
|
||||
* Get the width of a plane of an image
|
||||
*
|
||||
* \param[in] img Image descriptor
|
||||
* \param[in] plane Plane index
|
||||
*/
|
||||
int aom_img_plane_width(const aom_image_t *img, int plane);
|
||||
|
||||
/*!\brief Get the height of a plane
|
||||
*
|
||||
* Get the height of a plane of an image
|
||||
*
|
||||
* \param[in] img Image descriptor
|
||||
* \param[in] plane Plane index
|
||||
*/
|
||||
int aom_img_plane_height(const aom_image_t *img, int plane);
|
||||
|
||||
/*!\brief Add metadata to image.
|
||||
*
|
||||
* Adds metadata to aom_image_t.
|
||||
* Function makes a copy of the provided data parameter.
|
||||
* Metadata insertion point is controlled by insert_flag.
|
||||
*
|
||||
* \param[in] img Image descriptor
|
||||
* \param[in] type Metadata type
|
||||
* \param[in] data Metadata contents
|
||||
* \param[in] sz Metadata contents size
|
||||
* \param[in] insert_flag Metadata insert flag
|
||||
*
|
||||
* \return Returns 0 on success. If img or data is NULL, sz is 0, or memory
|
||||
* allocation fails, it returns -1.
|
||||
*/
|
||||
int aom_img_add_metadata(aom_image_t *img, uint32_t type, const uint8_t *data,
|
||||
size_t sz, aom_metadata_insert_flags_t insert_flag);
|
||||
|
||||
/*!\brief Return a metadata payload stored within the image metadata array.
|
||||
*
|
||||
* Gets the metadata (aom_metadata_t) at the indicated index in the image
|
||||
* metadata array.
|
||||
*
|
||||
* \param[in] img Pointer to image descriptor to get metadata from
|
||||
* \param[in] index Metadata index to get from metadata array
|
||||
*
|
||||
* \return Returns a const pointer to the selected metadata, if img and/or index
|
||||
* is invalid, it returns NULL.
|
||||
*/
|
||||
const aom_metadata_t *aom_img_get_metadata(const aom_image_t *img,
|
||||
size_t index);
|
||||
|
||||
/*!\brief Return the number of metadata blocks within the image.
|
||||
*
|
||||
* Gets the number of metadata blocks contained within the provided image
|
||||
* metadata array.
|
||||
*
|
||||
* \param[in] img Pointer to image descriptor to get metadata number
|
||||
* from.
|
||||
*
|
||||
* \return Returns the size of the metadata array. If img or metadata is NULL,
|
||||
* it returns 0.
|
||||
*/
|
||||
size_t aom_img_num_metadata(const aom_image_t *img);
|
||||
|
||||
/*!\brief Remove metadata from image.
|
||||
*
|
||||
* Removes all metadata in image metadata list and sets metadata list pointer
|
||||
* to NULL.
|
||||
*
|
||||
* \param[in] img Image descriptor
|
||||
*/
|
||||
void aom_img_remove_metadata(aom_image_t *img);
|
||||
|
||||
/*!\brief Allocate memory for aom_metadata struct.
|
||||
*
|
||||
* Allocates storage for the metadata payload, sets its type and copies the
|
||||
* payload data into the aom_metadata struct. A metadata payload buffer of size
|
||||
* sz is allocated and sz bytes are copied from data into the payload buffer.
|
||||
*
|
||||
* \param[in] type Metadata type
|
||||
* \param[in] data Metadata data pointer
|
||||
* \param[in] sz Metadata size
|
||||
* \param[in] insert_flag Metadata insert flag
|
||||
*
|
||||
* \return Returns the newly allocated aom_metadata struct. If data is NULL,
|
||||
* sz is 0, or memory allocation fails, it returns NULL.
|
||||
*/
|
||||
aom_metadata_t *aom_img_metadata_alloc(uint32_t type, const uint8_t *data,
|
||||
size_t sz,
|
||||
aom_metadata_insert_flags_t insert_flag);
|
||||
|
||||
/*!\brief Free metadata struct.
|
||||
*
|
||||
* Free metadata struct and its buffer.
|
||||
*
|
||||
* \param[in] metadata Metadata struct pointer
|
||||
*/
|
||||
void aom_img_metadata_free(aom_metadata_t *metadata);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif // AOM_AOM_AOM_IMAGE_H_
|
||||
@@ -1,68 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
#ifndef AOM_AOM_AOM_INTEGER_H_
|
||||
#define AOM_AOM_AOM_INTEGER_H_
|
||||
|
||||
/* get ptrdiff_t, size_t, wchar_t, NULL */
|
||||
#include <stddef.h>
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#define AOM_FORCE_INLINE __forceinline
|
||||
#define AOM_INLINE __inline
|
||||
#else
|
||||
#define AOM_FORCE_INLINE __inline__ __attribute__((always_inline))
|
||||
#define AOM_INLINE inline
|
||||
#endif
|
||||
|
||||
/* Assume platforms have the C99 standard integer types. */
|
||||
|
||||
#if defined(__cplusplus)
|
||||
#if !defined(__STDC_FORMAT_MACROS)
|
||||
#define __STDC_FORMAT_MACROS
|
||||
#endif
|
||||
#if !defined(__STDC_LIMIT_MACROS)
|
||||
#define __STDC_LIMIT_MACROS
|
||||
#endif
|
||||
#endif // __cplusplus
|
||||
|
||||
#include <stdint.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif // __cplusplus
|
||||
|
||||
// Returns size of uint64_t when encoded using LEB128.
|
||||
size_t aom_uleb_size_in_bytes(uint64_t value);
|
||||
|
||||
// Returns 0 on success, -1 on decode failure.
|
||||
// On success, 'value' stores the decoded LEB128 value and 'length' stores
|
||||
// the number of bytes decoded.
|
||||
int aom_uleb_decode(const uint8_t *buffer, size_t available, uint64_t *value,
|
||||
size_t *length);
|
||||
|
||||
// Encodes LEB128 integer. Returns 0 when successful, and -1 upon failure.
|
||||
int aom_uleb_encode(uint64_t value, size_t available, uint8_t *coded_value,
|
||||
size_t *coded_size);
|
||||
|
||||
// Encodes LEB128 integer to size specified. Returns 0 when successful, and -1
|
||||
// upon failure.
|
||||
// Note: This will write exactly pad_to_size bytes; if the value cannot be
|
||||
// encoded in this many bytes, then this will fail.
|
||||
int aom_uleb_encode_fixed_size(uint64_t value, size_t available,
|
||||
size_t pad_to_size, uint8_t *coded_value,
|
||||
size_t *coded_size);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
} // extern "C"
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif // AOM_AOM_AOM_INTEGER_H_
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,604 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
|
||||
/*!\defgroup aom_decoder AOMedia AOM/AV1 Decoder
|
||||
* \ingroup aom
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
/*!\file
|
||||
* \brief Provides definitions for using AOM or AV1 within the aom Decoder
|
||||
* interface.
|
||||
*/
|
||||
#ifndef AOM_AOM_AOMDX_H_
|
||||
#define AOM_AOM_AOMDX_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Include controls common to both the encoder and decoder */
|
||||
#include "aom/aom.h"
|
||||
|
||||
/*!\name Algorithm interface for AV1
|
||||
*
|
||||
* This interface provides the capability to decode AV1 streams.
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*!\brief A single instance of the AV1 decoder.
|
||||
*\deprecated This access mechanism is provided for backwards compatibility;
|
||||
* prefer aom_codec_av1_dx().
|
||||
*/
|
||||
extern aom_codec_iface_t aom_codec_av1_dx_algo;
|
||||
/*!\brief The interface to the AV1 decoder.
|
||||
*/
|
||||
extern aom_codec_iface_t *aom_codec_av1_dx(void);
|
||||
|
||||
/*!@} - end algorithm interface member group */
|
||||
|
||||
/** Data structure that stores bit accounting for debug
|
||||
*/
|
||||
typedef struct Accounting Accounting;
|
||||
|
||||
#ifndef AOM_INSPECTION_H_
|
||||
/** Callback that inspects decoder frame data.
|
||||
*/
|
||||
typedef void (*aom_inspect_cb)(void *decoder, void *ctx);
|
||||
|
||||
#endif
|
||||
|
||||
/*!\brief Structure to hold inspection callback and context.
|
||||
*
|
||||
* Defines a structure to hold the inspection callback function and calling
|
||||
* context.
|
||||
*/
|
||||
typedef struct aom_inspect_init {
|
||||
/*! Inspection callback. */
|
||||
aom_inspect_cb inspect_cb;
|
||||
|
||||
/*! Inspection context. */
|
||||
void *inspect_ctx;
|
||||
} aom_inspect_init;
|
||||
|
||||
/*!\brief Structure to collect a buffer index when inspecting.
|
||||
*
|
||||
* Defines a structure to hold the buffer and return an index
|
||||
* when calling decode from inspect. This enables us to decode
|
||||
* non showable sub frames.
|
||||
*/
|
||||
typedef struct {
|
||||
/*! Pointer for new position in compressed buffer after decoding 1 OBU. */
|
||||
const unsigned char *buf;
|
||||
/*! Index into reference buffer array to see result of decoding 1 OBU. */
|
||||
int idx;
|
||||
/*! Is a show existing frame. */
|
||||
int show_existing;
|
||||
} Av1DecodeReturn;
|
||||
|
||||
/*!\brief Structure to hold a tile's start address and size in the bitstream.
|
||||
*
|
||||
* Defines a structure to hold a tile's start address and size in the bitstream.
|
||||
*/
|
||||
typedef struct aom_tile_data {
|
||||
/*! Tile data size. */
|
||||
size_t coded_tile_data_size;
|
||||
/*! Tile's start address. */
|
||||
const void *coded_tile_data;
|
||||
/*! Extra size information. */
|
||||
size_t extra_size;
|
||||
} aom_tile_data;
|
||||
|
||||
/*!\brief Max number of tile columns
|
||||
*
|
||||
* This is the limit of number of tile columns allowed within a frame.
|
||||
*
|
||||
* Currently same as "MAX_TILE_COLS" in AV1, the maximum that AV1 supports.
|
||||
*
|
||||
*/
|
||||
#define AOM_MAX_TILE_COLS 64
|
||||
/*!\brief Max number of tile rows
|
||||
*
|
||||
* This is the limit of number of tile rows allowed within a frame.
|
||||
*
|
||||
* Currently same as "MAX_TILE_ROWS" in AV1, the maximum that AV1 supports.
|
||||
*
|
||||
*/
|
||||
#define AOM_MAX_TILE_ROWS 64
|
||||
|
||||
/*!\brief Structure to hold information about tiles in a frame.
|
||||
*
|
||||
* Defines a structure to hold a frame's tile information, namely
|
||||
* number of tile columns, number of tile_rows, and the width and
|
||||
* height of each tile.
|
||||
*/
|
||||
typedef struct aom_tile_info {
|
||||
/*! Indicates the number of tile columns. */
|
||||
int tile_columns;
|
||||
/*! Indicates the number of tile rows. */
|
||||
int tile_rows;
|
||||
/*! Indicates the tile widths in units of SB. */
|
||||
int tile_widths[AOM_MAX_TILE_COLS];
|
||||
/*! Indicates the tile heights in units of SB. */
|
||||
int tile_heights[AOM_MAX_TILE_ROWS];
|
||||
/*! Indicates the number of tile groups present in a frame. */
|
||||
int num_tile_groups;
|
||||
} aom_tile_info;
|
||||
|
||||
/*!\brief Structure to hold information about still image coding.
|
||||
*
|
||||
* Defines a structure to hold a information regarding still picture
|
||||
* and its header type.
|
||||
*/
|
||||
typedef struct aom_still_picture_info {
|
||||
/*! Video is a single frame still picture */
|
||||
int is_still_picture;
|
||||
/*! Use full header for still picture */
|
||||
int is_reduced_still_picture_hdr;
|
||||
} aom_still_picture_info;
|
||||
|
||||
/*!\brief Structure to hold information about S_FRAME.
|
||||
*
|
||||
* Defines a structure to hold a information regarding S_FRAME
|
||||
* and its position.
|
||||
*/
|
||||
typedef struct aom_s_frame_info {
|
||||
/*! Indicates if current frame is S_FRAME */
|
||||
int is_s_frame;
|
||||
/*! Indicates if current S_FRAME is present at ALTREF frame*/
|
||||
int is_s_frame_at_altref;
|
||||
} aom_s_frame_info;
|
||||
|
||||
/*!\brief Structure to hold information about screen content tools.
|
||||
*
|
||||
* Defines a structure to hold information about screen content
|
||||
* tools, namely: allow_screen_content_tools, allow_intrabc, and
|
||||
* force_integer_mv.
|
||||
*/
|
||||
typedef struct aom_screen_content_tools_info {
|
||||
/*! Are screen content tools allowed */
|
||||
int allow_screen_content_tools;
|
||||
/*! Is intrabc allowed */
|
||||
int allow_intrabc;
|
||||
/*! Is integer mv forced */
|
||||
int force_integer_mv;
|
||||
} aom_screen_content_tools_info;
|
||||
|
||||
/*!\brief Structure to hold the external reference frame pointer.
|
||||
*
|
||||
* Define a structure to hold the external reference frame pointer.
|
||||
*/
|
||||
typedef struct av1_ext_ref_frame {
|
||||
/*! Start pointer of external references. */
|
||||
aom_image_t *img;
|
||||
/*! Number of available external references. */
|
||||
int num;
|
||||
} av1_ext_ref_frame_t;
|
||||
|
||||
/*!\enum aom_dec_control_id
|
||||
* \brief AOM decoder control functions
|
||||
*
|
||||
* This set of macros define the control functions available for the AOM
|
||||
* decoder interface.
|
||||
* The range for decoder control ID is >= 256.
|
||||
*
|
||||
* \sa #aom_codec_control(aom_codec_ctx_t *ctx, int ctrl_id, ...)
|
||||
*/
|
||||
enum aom_dec_control_id {
|
||||
/*!\brief Codec control function to get info on which reference frames were
|
||||
* updated by the last decode, int* parameter
|
||||
*/
|
||||
AOMD_GET_LAST_REF_UPDATES = AOM_DECODER_CTRL_ID_START,
|
||||
|
||||
/*!\brief Codec control function to check if the indicated frame is
|
||||
corrupted, int* parameter
|
||||
*/
|
||||
AOMD_GET_FRAME_CORRUPTED,
|
||||
|
||||
/*!\brief Codec control function to get info on which reference frames were
|
||||
* used by the last decode, int* parameter
|
||||
*/
|
||||
AOMD_GET_LAST_REF_USED,
|
||||
|
||||
/*!\brief Codec control function to get the dimensions that the current
|
||||
* frame is decoded at, int* parameter
|
||||
*
|
||||
* This may be different to the intended display size for the frame as
|
||||
* specified in the wrapper or frame header (see AV1D_GET_DISPLAY_SIZE).
|
||||
*/
|
||||
AV1D_GET_FRAME_SIZE,
|
||||
|
||||
/*!\brief Codec control function to get the current frame's intended display
|
||||
* dimensions (as specified in the wrapper or frame header), int* parameter
|
||||
*
|
||||
* This may be different to the decoded dimensions of this frame (see
|
||||
* AV1D_GET_FRAME_SIZE).
|
||||
*/
|
||||
AV1D_GET_DISPLAY_SIZE,
|
||||
|
||||
/*!\brief Codec control function to get the bit depth of the stream,
|
||||
* unsigned int* parameter
|
||||
*/
|
||||
AV1D_GET_BIT_DEPTH,
|
||||
|
||||
/*!\brief Codec control function to get the image format of the stream,
|
||||
* aom_img_fmt_t* parameter
|
||||
*/
|
||||
AV1D_GET_IMG_FORMAT,
|
||||
|
||||
/*!\brief Codec control function to get the size of the tile, unsigned int*
|
||||
* parameter
|
||||
*/
|
||||
AV1D_GET_TILE_SIZE,
|
||||
|
||||
/*!\brief Codec control function to get the tile count in a tile list,
|
||||
* unsigned int* parameter
|
||||
*/
|
||||
AV1D_GET_TILE_COUNT,
|
||||
|
||||
/*!\brief Codec control function to set the byte alignment of the planes in
|
||||
* the reference buffers, int parameter
|
||||
*
|
||||
* Valid values are power of 2, from 32 to 1024. A value of 0 sets
|
||||
* legacy alignment. I.e. Y plane is aligned to 32 bytes, U plane directly
|
||||
* follows Y plane, and V plane directly follows U plane. Default value is 0.
|
||||
*/
|
||||
AV1_SET_BYTE_ALIGNMENT,
|
||||
|
||||
/*!\brief Codec control function to invert the decoding order to from right to
|
||||
* left, int parameter
|
||||
*
|
||||
* The function is used in a test to confirm the decoding independence of tile
|
||||
* columns. The function may be used in application where this order
|
||||
* of decoding is desired. int parameter
|
||||
*
|
||||
* TODO(yaowu): Rework the unit test that uses this control, and in a future
|
||||
* release, this test-only control shall be removed.
|
||||
*/
|
||||
AV1_INVERT_TILE_DECODE_ORDER,
|
||||
|
||||
/*!\brief Codec control function to set the skip loop filter flag, int
|
||||
* parameter
|
||||
*
|
||||
* Valid values are integers. The decoder will skip the loop filter
|
||||
* when its value is set to nonzero. If the loop filter is skipped the
|
||||
* decoder may accumulate decode artifacts. The default value is 0.
|
||||
*/
|
||||
AV1_SET_SKIP_LOOP_FILTER,
|
||||
|
||||
/*!\brief Codec control function to retrieve a pointer to the Accounting
|
||||
* struct, takes Accounting** as parameter
|
||||
*
|
||||
* If called before a frame has been decoded, this returns AOM_CODEC_ERROR.
|
||||
* The caller should ensure that AOM_CODEC_OK is returned before attempting
|
||||
* to dereference the Accounting pointer.
|
||||
*
|
||||
* \attention When configured with -DCONFIG_ACCOUNTING=0, the default, this
|
||||
* returns AOM_CODEC_INCAPABLE.
|
||||
*/
|
||||
AV1_GET_ACCOUNTING,
|
||||
|
||||
/*!\brief Codec control function to get last decoded frame quantizer,
|
||||
* int* parameter
|
||||
*
|
||||
* Returned value uses internal quantizer scale defined by the codec.
|
||||
*/
|
||||
AOMD_GET_LAST_QUANTIZER,
|
||||
|
||||
/*!\brief Codec control function to set the range of tile decoding, int
|
||||
* parameter
|
||||
*
|
||||
* A value that is greater and equal to zero indicates only the specific
|
||||
* row/column is decoded. A value that is -1 indicates the whole row/column
|
||||
* is decoded. A special case is both values are -1 that means the whole
|
||||
* frame is decoded.
|
||||
*/
|
||||
AV1_SET_DECODE_TILE_ROW,
|
||||
AV1_SET_DECODE_TILE_COL,
|
||||
|
||||
/*!\brief Codec control function to set the tile coding mode, unsigned int
|
||||
* parameter
|
||||
*
|
||||
* - 0 = tiles are coded in normal tile mode
|
||||
* - 1 = tiles are coded in large-scale tile mode
|
||||
*/
|
||||
AV1_SET_TILE_MODE,
|
||||
|
||||
/*!\brief Codec control function to get the frame header information of an
|
||||
* encoded frame, aom_tile_data* parameter
|
||||
*/
|
||||
AV1D_GET_FRAME_HEADER_INFO,
|
||||
|
||||
/*!\brief Codec control function to get the start address and size of a
|
||||
* tile in the coded bitstream, aom_tile_data* parameter.
|
||||
*/
|
||||
AV1D_GET_TILE_DATA,
|
||||
|
||||
/*!\brief Codec control function to set the external references' pointers in
|
||||
* the decoder, av1_ext_ref_frame_t* parameter.
|
||||
*
|
||||
* This is used while decoding the tile list OBU in large-scale tile coding
|
||||
* mode.
|
||||
*/
|
||||
AV1D_SET_EXT_REF_PTR,
|
||||
|
||||
/*!\brief Codec control function to enable the ext-tile software debug and
|
||||
* testing code in the decoder, unsigned int parameter
|
||||
*/
|
||||
AV1D_EXT_TILE_DEBUG,
|
||||
|
||||
/*!\brief Codec control function to enable the row based multi-threading of
|
||||
* decoding, unsigned int parameter
|
||||
*
|
||||
* - 0 = disabled
|
||||
* - 1 = enabled (default)
|
||||
*/
|
||||
AV1D_SET_ROW_MT,
|
||||
|
||||
/*!\brief Codec control function to indicate whether bitstream is in
|
||||
* Annex-B format, unsigned int parameter
|
||||
*/
|
||||
AV1D_SET_IS_ANNEXB,
|
||||
|
||||
/*!\brief Codec control function to indicate which operating point to use,
|
||||
* int parameter
|
||||
*
|
||||
* A scalable stream may define multiple operating points, each of which
|
||||
* defines a set of temporal and spatial layers to be processed. The
|
||||
* operating point index may take a value between 0 and
|
||||
* operating_points_cnt_minus_1 (which is at most 31).
|
||||
*/
|
||||
AV1D_SET_OPERATING_POINT,
|
||||
|
||||
/*!\brief Codec control function to indicate whether to output one frame per
|
||||
* temporal unit (the default), or one frame per spatial layer, int parameter
|
||||
*
|
||||
* In a scalable stream, each temporal unit corresponds to a single "frame"
|
||||
* of video, and within a temporal unit there may be multiple spatial layers
|
||||
* with different versions of that frame.
|
||||
* For video playback, only the highest-quality version (within the
|
||||
* selected operating point) is needed, but for some use cases it is useful
|
||||
* to have access to multiple versions of a frame when they are available.
|
||||
*/
|
||||
AV1D_SET_OUTPUT_ALL_LAYERS,
|
||||
|
||||
/*!\brief Codec control function to set an aom_inspect_cb callback that is
|
||||
* invoked each time a frame is decoded, aom_inspect_init* parameter
|
||||
*
|
||||
* \attention When configured with -DCONFIG_INSPECTION=0, the default, this
|
||||
* returns AOM_CODEC_INCAPABLE.
|
||||
*/
|
||||
AV1_SET_INSPECTION_CALLBACK,
|
||||
|
||||
/*!\brief Codec control function to set the skip film grain flag, int
|
||||
* parameter
|
||||
*
|
||||
* Valid values are integers. The decoder will skip the film grain when its
|
||||
* value is set to nonzero. The default value is 0.
|
||||
*/
|
||||
AV1D_SET_SKIP_FILM_GRAIN,
|
||||
|
||||
/*!\brief Codec control function to check the presence of forward key frames,
|
||||
* int* parameter
|
||||
*/
|
||||
AOMD_GET_FWD_KF_PRESENT,
|
||||
|
||||
/*!\brief Codec control function to get the frame flags of the previous frame
|
||||
* decoded, int* parameter
|
||||
*
|
||||
* This will return a flag of type aom_codec_frame_flags_t.
|
||||
*/
|
||||
AOMD_GET_FRAME_FLAGS,
|
||||
|
||||
/*!\brief Codec control function to check the presence of altref frames, int*
|
||||
* parameter
|
||||
*/
|
||||
AOMD_GET_ALTREF_PRESENT,
|
||||
|
||||
/*!\brief Codec control function to get tile information of the previous frame
|
||||
* decoded, aom_tile_info* parameter
|
||||
*
|
||||
* This will return a struct of type aom_tile_info.
|
||||
*/
|
||||
AOMD_GET_TILE_INFO,
|
||||
|
||||
/*!\brief Codec control function to get screen content tools information,
|
||||
* aom_screen_content_tools_info* parameter
|
||||
*
|
||||
* It returns a struct of type aom_screen_content_tools_info, which contains
|
||||
* the header flags allow_screen_content_tools, allow_intrabc, and
|
||||
* force_integer_mv.
|
||||
*/
|
||||
AOMD_GET_SCREEN_CONTENT_TOOLS_INFO,
|
||||
|
||||
/*!\brief Codec control function to get the still picture coding information,
|
||||
* aom_still_picture_info* parameter
|
||||
*/
|
||||
AOMD_GET_STILL_PICTURE,
|
||||
|
||||
/*!\brief Codec control function to get superblock size,
|
||||
* aom_superblock_size_t* parameter
|
||||
*
|
||||
* It returns an enum, indicating the superblock size read from the sequence
|
||||
* header(0 for BLOCK_64X64 and 1 for BLOCK_128X128)
|
||||
*/
|
||||
AOMD_GET_SB_SIZE,
|
||||
|
||||
/*!\brief Codec control function to check if the previous frame
|
||||
* decoded has show existing frame flag set, int* parameter
|
||||
*/
|
||||
AOMD_GET_SHOW_EXISTING_FRAME_FLAG,
|
||||
|
||||
/*!\brief Codec control function to get the S_FRAME coding information,
|
||||
* aom_s_frame_info* parameter
|
||||
*/
|
||||
AOMD_GET_S_FRAME_INFO,
|
||||
|
||||
/*!\brief Codec control function to get the show frame flag, int* parameter
|
||||
*/
|
||||
AOMD_GET_SHOW_FRAME_FLAG,
|
||||
|
||||
/*!\brief Codec control function to get the base q index of a frame, int*
|
||||
* parameter
|
||||
*/
|
||||
AOMD_GET_BASE_Q_IDX,
|
||||
|
||||
/*!\brief Codec control function to get the order hint of a frame, unsigned
|
||||
* int* parameter
|
||||
*/
|
||||
AOMD_GET_ORDER_HINT,
|
||||
|
||||
/*!\brief Codec control function to get the info of a 4x4 block.
|
||||
* Parameters: int mi_row, int mi_col, and MB_MODE_INFO*.
|
||||
*
|
||||
* \note This only returns a shallow copy, so all pointer members should not
|
||||
* be used.
|
||||
*/
|
||||
AV1D_GET_MI_INFO,
|
||||
};
|
||||
|
||||
/*!\cond */
|
||||
/*!\brief AOM decoder control function parameter type
|
||||
*
|
||||
* Defines the data types that AOMD control functions take.
|
||||
*
|
||||
* \note Additional common controls are defined in aom.h.
|
||||
*
|
||||
* \note For each control ID "X", a macro-define of
|
||||
* AOM_CTRL_X is provided. It is used at compile time to determine
|
||||
* if the control ID is supported by the libaom library available,
|
||||
* when the libaom version cannot be controlled.
|
||||
*/
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_LAST_REF_UPDATES, int *)
|
||||
#define AOM_CTRL_AOMD_GET_LAST_REF_UPDATES
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_FRAME_CORRUPTED, int *)
|
||||
#define AOM_CTRL_AOMD_GET_FRAME_CORRUPTED
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_LAST_REF_USED, int *)
|
||||
#define AOM_CTRL_AOMD_GET_LAST_REF_USED
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1D_GET_FRAME_SIZE, int *)
|
||||
#define AOM_CTRL_AV1D_GET_FRAME_SIZE
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1D_GET_DISPLAY_SIZE, int *)
|
||||
#define AOM_CTRL_AV1D_GET_DISPLAY_SIZE
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1D_GET_BIT_DEPTH, unsigned int *)
|
||||
#define AOM_CTRL_AV1D_GET_BIT_DEPTH
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1D_GET_IMG_FORMAT, aom_img_fmt_t *)
|
||||
#define AOM_CTRL_AV1D_GET_IMG_FORMAT
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1D_GET_TILE_SIZE, unsigned int *)
|
||||
#define AOM_CTRL_AV1D_GET_TILE_SIZE
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1D_GET_TILE_COUNT, unsigned int *)
|
||||
#define AOM_CTRL_AV1D_GET_TILE_COUNT
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1_INVERT_TILE_DECODE_ORDER, int)
|
||||
#define AOM_CTRL_AV1_INVERT_TILE_DECODE_ORDER
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1_SET_SKIP_LOOP_FILTER, int)
|
||||
#define AOM_CTRL_AV1_SET_SKIP_LOOP_FILTER
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1_GET_ACCOUNTING, Accounting **)
|
||||
#define AOM_CTRL_AV1_GET_ACCOUNTING
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_LAST_QUANTIZER, int *)
|
||||
#define AOM_CTRL_AOMD_GET_LAST_QUANTIZER
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1_SET_DECODE_TILE_ROW, int)
|
||||
#define AOM_CTRL_AV1_SET_DECODE_TILE_ROW
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1_SET_DECODE_TILE_COL, int)
|
||||
#define AOM_CTRL_AV1_SET_DECODE_TILE_COL
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1_SET_TILE_MODE, unsigned int)
|
||||
#define AOM_CTRL_AV1_SET_TILE_MODE
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1D_GET_FRAME_HEADER_INFO, aom_tile_data *)
|
||||
#define AOM_CTRL_AV1D_GET_FRAME_HEADER_INFO
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1D_GET_TILE_DATA, aom_tile_data *)
|
||||
#define AOM_CTRL_AV1D_GET_TILE_DATA
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1D_SET_EXT_REF_PTR, av1_ext_ref_frame_t *)
|
||||
#define AOM_CTRL_AV1D_SET_EXT_REF_PTR
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1D_EXT_TILE_DEBUG, unsigned int)
|
||||
#define AOM_CTRL_AV1D_EXT_TILE_DEBUG
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1D_SET_ROW_MT, unsigned int)
|
||||
#define AOM_CTRL_AV1D_SET_ROW_MT
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1D_SET_IS_ANNEXB, unsigned int)
|
||||
#define AOM_CTRL_AV1D_SET_IS_ANNEXB
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1D_SET_OPERATING_POINT, int)
|
||||
#define AOM_CTRL_AV1D_SET_OPERATING_POINT
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1D_SET_OUTPUT_ALL_LAYERS, int)
|
||||
#define AOM_CTRL_AV1D_SET_OUTPUT_ALL_LAYERS
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1_SET_INSPECTION_CALLBACK, aom_inspect_init *)
|
||||
#define AOM_CTRL_AV1_SET_INSPECTION_CALLBACK
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1D_SET_SKIP_FILM_GRAIN, int)
|
||||
#define AOM_CTRL_AV1D_SET_SKIP_FILM_GRAIN
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_FWD_KF_PRESENT, int *)
|
||||
#define AOM_CTRL_AOMD_GET_FWD_KF_PRESENT
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_FRAME_FLAGS, int *)
|
||||
#define AOM_CTRL_AOMD_GET_FRAME_FLAGS
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_ALTREF_PRESENT, int *)
|
||||
#define AOM_CTRL_AOMD_GET_ALTREF_PRESENT
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_TILE_INFO, aom_tile_info *)
|
||||
#define AOM_CTRL_AOMD_GET_TILE_INFO
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_SCREEN_CONTENT_TOOLS_INFO,
|
||||
aom_screen_content_tools_info *)
|
||||
#define AOM_CTRL_AOMD_GET_SCREEN_CONTENT_TOOLS_INFO
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_STILL_PICTURE, aom_still_picture_info *)
|
||||
#define AOM_CTRL_AOMD_GET_STILL_PICTURE
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_SB_SIZE, aom_superblock_size_t *)
|
||||
#define AOMD_CTRL_AOMD_GET_SB_SIZE
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_SHOW_EXISTING_FRAME_FLAG, int *)
|
||||
#define AOMD_CTRL_AOMD_GET_SHOW_EXISTING_FRAME_FLAG
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_S_FRAME_INFO, aom_s_frame_info *)
|
||||
#define AOMD_CTRL_AOMD_GET_S_FRAME_INFO
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_SHOW_FRAME_FLAG, int *)
|
||||
#define AOM_CTRL_AOMD_GET_SHOW_FRAME_FLAG
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_BASE_Q_IDX, int *)
|
||||
#define AOM_CTRL_AOMD_GET_BASE_Q_IDX
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOMD_GET_ORDER_HINT, unsigned int *)
|
||||
#define AOM_CTRL_AOMD_GET_ORDER_HINT
|
||||
|
||||
// The AOM_CTRL_USE_TYPE macro can't be used with AV1D_GET_MI_INFO because
|
||||
// AV1D_GET_MI_INFO takes more than one parameter.
|
||||
#define AOM_CTRL_AV1D_GET_MI_INFO
|
||||
/*!\endcond */
|
||||
/*! @} - end defgroup aom_decoder */
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif // AOM_AOM_AOMDX_H_
|
||||
@@ -1,42 +0,0 @@
|
||||
text aom_codec_build_config
|
||||
text aom_codec_control
|
||||
text aom_codec_destroy
|
||||
text aom_codec_err_to_string
|
||||
text aom_codec_error
|
||||
text aom_codec_error_detail
|
||||
text aom_codec_get_caps
|
||||
text aom_codec_iface_name
|
||||
text aom_codec_set_option
|
||||
text aom_codec_version
|
||||
text aom_codec_version_extra_str
|
||||
text aom_codec_version_str
|
||||
text aom_free
|
||||
text aom_img_add_metadata
|
||||
text aom_img_alloc
|
||||
text aom_img_alloc_with_border
|
||||
text aom_img_flip
|
||||
text aom_img_free
|
||||
text aom_img_get_metadata
|
||||
text aom_img_metadata_array_free
|
||||
text aom_img_metadata_array_alloc
|
||||
text aom_img_metadata_free
|
||||
text aom_img_metadata_alloc
|
||||
text aom_img_num_metadata
|
||||
text aom_img_plane_height
|
||||
text aom_img_plane_width
|
||||
text aom_img_remove_metadata
|
||||
text aom_img_set_rect
|
||||
text aom_img_wrap
|
||||
text aom_malloc
|
||||
text aom_rb_bytes_read
|
||||
text aom_rb_read_bit
|
||||
text aom_rb_read_literal
|
||||
text aom_rb_read_uvlc
|
||||
text aom_uleb_decode
|
||||
text aom_uleb_encode
|
||||
text aom_uleb_encode_fixed_size
|
||||
text aom_uleb_size_in_bytes
|
||||
text aom_wb_bytes_written
|
||||
text aom_wb_write_bit
|
||||
text aom_wb_write_literal
|
||||
text aom_wb_write_unsigned_literal
|
||||
@@ -1,8 +0,0 @@
|
||||
text aom_codec_dec_init_ver
|
||||
text aom_codec_decode
|
||||
text aom_codec_get_frame
|
||||
text aom_codec_get_stream_info
|
||||
text aom_codec_peek_stream_info
|
||||
text aom_codec_set_frame_buffer_functions
|
||||
text aom_obu_type_to_string
|
||||
text aom_read_obu_header
|
||||
@@ -1,17 +0,0 @@
|
||||
text aom_codec_enc_config_default
|
||||
text aom_codec_enc_config_set
|
||||
text aom_codec_enc_init_ver
|
||||
text aom_codec_encode
|
||||
text aom_codec_get_cx_data
|
||||
text aom_codec_get_global_headers
|
||||
text aom_codec_get_preview_frame
|
||||
text aom_codec_set_cx_data_buf
|
||||
text aom_film_grain_table_append
|
||||
text aom_film_grain_table_free
|
||||
text aom_film_grain_table_write
|
||||
text aom_flat_block_finder_init
|
||||
text aom_flat_block_finder_run
|
||||
text aom_noise_model_init
|
||||
text aom_noise_model_get_grain_parameters
|
||||
text aom_noise_model_save_latest
|
||||
text aom_noise_model_update
|
||||
@@ -1,4 +0,0 @@
|
||||
text aom_copy_metadata_to_frame_buffer
|
||||
text aom_dsp_rtcd
|
||||
text aom_remove_metadata_from_frame_buffer
|
||||
text aom_scale_rtcd
|
||||
@@ -1,407 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
|
||||
/*!\file
|
||||
* \brief Describes the decoder algorithm interface for algorithm
|
||||
* implementations.
|
||||
*
|
||||
* This file defines the private structures and data types that are only
|
||||
* relevant to implementing an algorithm, as opposed to using it.
|
||||
*
|
||||
* To create a decoder algorithm class, an interface structure is put
|
||||
* into the global namespace:
|
||||
* <pre>
|
||||
* my_codec.c:
|
||||
* aom_codec_iface_t my_codec = {
|
||||
* "My Codec v1.0",
|
||||
* AOM_CODEC_ALG_ABI_VERSION,
|
||||
* ...
|
||||
* };
|
||||
* </pre>
|
||||
*
|
||||
* An application instantiates a specific decoder instance by using
|
||||
* aom_codec_dec_init() and a pointer to the algorithm's interface structure:
|
||||
* <pre>
|
||||
* my_app.c:
|
||||
* extern aom_codec_iface_t my_codec;
|
||||
* {
|
||||
* aom_codec_ctx_t algo;
|
||||
* int threads = 4;
|
||||
* aom_codec_dec_cfg_t cfg = { threads, 0, 0, 1 };
|
||||
* res = aom_codec_dec_init(&algo, &my_codec, &cfg, 0);
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* Once initialized, the instance is managed using other functions from
|
||||
* the aom_codec_* family.
|
||||
*/
|
||||
#ifndef AOM_AOM_INTERNAL_AOM_CODEC_INTERNAL_H_
|
||||
#define AOM_AOM_INTERNAL_AOM_CODEC_INTERNAL_H_
|
||||
#include "../aom_decoder.h"
|
||||
#include "../aom_encoder.h"
|
||||
#include "common/args_helper.h"
|
||||
#include <stdarg.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*!\brief Current ABI version number
|
||||
*
|
||||
* \internal
|
||||
* If this file is altered in any way that changes the ABI, this value
|
||||
* must be bumped. Examples include, but are not limited to, changing
|
||||
* types, removing or reassigning enums, adding/removing/rearranging
|
||||
* fields to structures
|
||||
*/
|
||||
#define AOM_CODEC_INTERNAL_ABI_VERSION (7) /**<\hideinitializer*/
|
||||
|
||||
typedef struct aom_codec_alg_priv aom_codec_alg_priv_t;
|
||||
|
||||
/*!\brief init function pointer prototype
|
||||
*
|
||||
* Performs algorithm-specific initialization of the decoder context. This
|
||||
* function is called by aom_codec_dec_init() and aom_codec_enc_init(), so
|
||||
* plugins implementing this interface may trust the input parameters to be
|
||||
* properly initialized.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
* \retval #AOM_CODEC_OK
|
||||
* The input stream was recognized and decoder initialized.
|
||||
* \retval #AOM_CODEC_MEM_ERROR
|
||||
* Memory operation failed.
|
||||
*/
|
||||
typedef aom_codec_err_t (*aom_codec_init_fn_t)(aom_codec_ctx_t *ctx);
|
||||
|
||||
/*!\brief destroy function pointer prototype
|
||||
*
|
||||
* Performs algorithm-specific destruction of the decoder context. This
|
||||
* function is called by the generic aom_codec_destroy() wrapper function,
|
||||
* so plugins implementing this interface may trust the input parameters
|
||||
* to be properly initialized.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
* \retval #AOM_CODEC_OK
|
||||
* The input stream was recognized and decoder initialized.
|
||||
* \retval #AOM_CODEC_MEM_ERROR
|
||||
* Memory operation failed.
|
||||
*/
|
||||
typedef aom_codec_err_t (*aom_codec_destroy_fn_t)(aom_codec_alg_priv_t *ctx);
|
||||
|
||||
/*!\brief parse stream info function pointer prototype
|
||||
*
|
||||
* Performs high level parsing of the bitstream. This function is called by the
|
||||
* generic aom_codec_peek_stream_info() wrapper function, so plugins
|
||||
* implementing this interface may trust the input parameters to be properly
|
||||
* initialized.
|
||||
*
|
||||
* \param[in] data Pointer to a block of data to parse
|
||||
* \param[in] data_sz Size of the data buffer
|
||||
* \param[in,out] si Pointer to stream info to update. The is_annexb
|
||||
* member \ref MUST be properly initialized. This
|
||||
* function sets the rest of the members.
|
||||
*
|
||||
* \retval #AOM_CODEC_OK
|
||||
* Bitstream is parsable and stream information updated
|
||||
*/
|
||||
typedef aom_codec_err_t (*aom_codec_peek_si_fn_t)(const uint8_t *data,
|
||||
size_t data_sz,
|
||||
aom_codec_stream_info_t *si);
|
||||
|
||||
/*!\brief Return information about the current stream.
|
||||
*
|
||||
* Returns information about the stream that has been parsed during decoding.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
* \param[in,out] si Pointer to stream info to update
|
||||
*
|
||||
* \retval #AOM_CODEC_OK
|
||||
* Bitstream is parsable and stream information updated
|
||||
*/
|
||||
typedef aom_codec_err_t (*aom_codec_get_si_fn_t)(aom_codec_alg_priv_t *ctx,
|
||||
aom_codec_stream_info_t *si);
|
||||
|
||||
/*!\brief control function pointer prototype
|
||||
*
|
||||
* This function is used to exchange algorithm specific data with the decoder
|
||||
* instance. This can be used to implement features specific to a particular
|
||||
* algorithm.
|
||||
*
|
||||
* This function is called by the generic aom_codec_control() wrapper
|
||||
* function, so plugins implementing this interface may trust the input
|
||||
* parameters to be properly initialized. However, this interface does not
|
||||
* provide type safety for the exchanged data or assign meanings to the
|
||||
* control IDs. Those details should be specified in the algorithm's
|
||||
* header file. In particular, the ctrl_id parameter is guaranteed to exist
|
||||
* in the algorithm's control mapping table, and the data parameter may be NULL.
|
||||
*
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
* \param[in] ctrl_id Algorithm specific control identifier
|
||||
* \param[in,out] data Data to exchange with algorithm instance.
|
||||
*
|
||||
* \retval #AOM_CODEC_OK
|
||||
* The internal state data was deserialized.
|
||||
*/
|
||||
typedef aom_codec_err_t (*aom_codec_control_fn_t)(aom_codec_alg_priv_t *ctx,
|
||||
va_list ap);
|
||||
|
||||
/*!\brief codec option setter function pointer prototype
|
||||
* This function is used to set a codec option using a key (option name) & value
|
||||
* pair.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
* \param[in] name A string of the option's name (key)
|
||||
* \param[in] value A string of the value to be set to
|
||||
*
|
||||
* \retval #AOM_CODEC_OK
|
||||
* The option is successfully set to the value
|
||||
* \retval #AOM_CODEC_INVALID_PARAM
|
||||
* The data was not valid.
|
||||
*/
|
||||
typedef aom_codec_err_t (*aom_codec_set_option_fn_t)(aom_codec_alg_priv_t *ctx,
|
||||
const char *name,
|
||||
const char *value);
|
||||
|
||||
/*!\brief control function pointer mapping
|
||||
*
|
||||
* This structure stores the mapping between control identifiers and
|
||||
* implementing functions. Each algorithm provides a list of these
|
||||
* mappings. This list is searched by the aom_codec_control()
|
||||
* function to determine which function to invoke. The special
|
||||
* value defined by CTRL_MAP_END is used to indicate end-of-list, and must be
|
||||
* present. It can be tested with the at_ctrl_map_end function. Note that
|
||||
* ctrl_id values \ref MUST be non-zero.
|
||||
*/
|
||||
typedef const struct aom_codec_ctrl_fn_map {
|
||||
int ctrl_id;
|
||||
aom_codec_control_fn_t fn;
|
||||
} aom_codec_ctrl_fn_map_t;
|
||||
|
||||
#define CTRL_MAP_END \
|
||||
{ 0, NULL }
|
||||
|
||||
static AOM_INLINE int at_ctrl_map_end(aom_codec_ctrl_fn_map_t *e) {
|
||||
return e->ctrl_id == 0 && e->fn == NULL;
|
||||
}
|
||||
|
||||
/*!\brief decode data function pointer prototype
|
||||
*
|
||||
* Processes a buffer of coded data. This function is called by the generic
|
||||
* aom_codec_decode() wrapper function, so plugins implementing this interface
|
||||
* may trust the input parameters to be properly initialized.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
* \param[in] data Pointer to this block of new coded data.
|
||||
* \param[in] data_sz Size of the coded data, in bytes.
|
||||
*
|
||||
* \return Returns #AOM_CODEC_OK if the coded data was processed completely
|
||||
* and future pictures can be decoded without error. Otherwise,
|
||||
* see the descriptions of the other error codes in ::aom_codec_err_t
|
||||
* for recoverability capabilities.
|
||||
*/
|
||||
typedef aom_codec_err_t (*aom_codec_decode_fn_t)(aom_codec_alg_priv_t *ctx,
|
||||
const uint8_t *data,
|
||||
size_t data_sz,
|
||||
void *user_priv);
|
||||
|
||||
/*!\brief Decoded frames iterator
|
||||
*
|
||||
* Iterates over a list of the frames available for display. The iterator
|
||||
* storage should be initialized to NULL to start the iteration. Iteration is
|
||||
* complete when this function returns NULL.
|
||||
*
|
||||
* The list of available frames becomes valid upon completion of the
|
||||
* aom_codec_decode call, and remains valid until the next call to
|
||||
* aom_codec_decode.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
* \param[in out] iter Iterator storage, initialized to NULL
|
||||
*
|
||||
* \return Returns a pointer to an image, if one is ready for display. Frames
|
||||
* produced will always be in PTS (presentation time stamp) order.
|
||||
*/
|
||||
typedef aom_image_t *(*aom_codec_get_frame_fn_t)(aom_codec_alg_priv_t *ctx,
|
||||
aom_codec_iter_t *iter);
|
||||
|
||||
/*!\brief Pass in external frame buffers for the decoder to use.
|
||||
*
|
||||
* Registers functions to be called when libaom needs a frame buffer
|
||||
* to decode the current frame and a function to be called when libaom does
|
||||
* not internally reference the frame buffer. This set function must
|
||||
* be called before the first call to decode or libaom will assume the
|
||||
* default behavior of allocating frame buffers internally.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
* \param[in] cb_get Pointer to the get callback function
|
||||
* \param[in] cb_release Pointer to the release callback function
|
||||
* \param[in] cb_priv Callback's private data
|
||||
*
|
||||
* \retval #AOM_CODEC_OK
|
||||
* External frame buffers will be used by libaom.
|
||||
* \retval #AOM_CODEC_INVALID_PARAM
|
||||
* One or more of the callbacks were NULL.
|
||||
* \retval #AOM_CODEC_ERROR
|
||||
* Decoder context not initialized, or algorithm not capable of
|
||||
* using external frame buffers.
|
||||
*
|
||||
* \note
|
||||
* When decoding AV1, the application may be required to pass in at least
|
||||
* #AOM_MAXIMUM_WORK_BUFFERS external frame
|
||||
* buffers.
|
||||
*/
|
||||
typedef aom_codec_err_t (*aom_codec_set_fb_fn_t)(
|
||||
aom_codec_alg_priv_t *ctx, aom_get_frame_buffer_cb_fn_t cb_get,
|
||||
aom_release_frame_buffer_cb_fn_t cb_release, void *cb_priv);
|
||||
|
||||
typedef aom_codec_err_t (*aom_codec_encode_fn_t)(aom_codec_alg_priv_t *ctx,
|
||||
const aom_image_t *img,
|
||||
aom_codec_pts_t pts,
|
||||
unsigned long duration,
|
||||
aom_enc_frame_flags_t flags);
|
||||
typedef const aom_codec_cx_pkt_t *(*aom_codec_get_cx_data_fn_t)(
|
||||
aom_codec_alg_priv_t *ctx, aom_codec_iter_t *iter);
|
||||
|
||||
typedef aom_codec_err_t (*aom_codec_enc_config_set_fn_t)(
|
||||
aom_codec_alg_priv_t *ctx, const aom_codec_enc_cfg_t *cfg);
|
||||
typedef aom_fixed_buf_t *(*aom_codec_get_global_headers_fn_t)(
|
||||
aom_codec_alg_priv_t *ctx);
|
||||
|
||||
typedef aom_image_t *(*aom_codec_get_preview_frame_fn_t)(
|
||||
aom_codec_alg_priv_t *ctx);
|
||||
|
||||
/*!\brief Decoder algorithm interface
|
||||
*
|
||||
* All decoders \ref MUST expose a variable of this type.
|
||||
*/
|
||||
struct aom_codec_iface {
|
||||
const char *name; /**< Identification String */
|
||||
int abi_version; /**< Implemented ABI version */
|
||||
aom_codec_caps_t caps; /**< Decoder capabilities */
|
||||
aom_codec_init_fn_t init; /**< \copydoc ::aom_codec_init_fn_t */
|
||||
aom_codec_destroy_fn_t destroy; /**< \copydoc ::aom_codec_destroy_fn_t */
|
||||
aom_codec_ctrl_fn_map_t *ctrl_maps; /**< \copydoc ::aom_codec_ctrl_fn_map_t */
|
||||
struct aom_codec_dec_iface {
|
||||
aom_codec_peek_si_fn_t peek_si; /**< \copydoc ::aom_codec_peek_si_fn_t */
|
||||
aom_codec_get_si_fn_t get_si; /**< \copydoc ::aom_codec_get_si_fn_t */
|
||||
aom_codec_decode_fn_t decode; /**< \copydoc ::aom_codec_decode_fn_t */
|
||||
aom_codec_get_frame_fn_t
|
||||
get_frame; /**< \copydoc ::aom_codec_get_frame_fn_t */
|
||||
aom_codec_set_fb_fn_t set_fb_fn; /**< \copydoc ::aom_codec_set_fb_fn_t */
|
||||
} dec;
|
||||
struct aom_codec_enc_iface {
|
||||
int cfg_count;
|
||||
const aom_codec_enc_cfg_t *cfgs; /**< \copydoc ::aom_codec_enc_cfg_t */
|
||||
aom_codec_encode_fn_t encode; /**< \copydoc ::aom_codec_encode_fn_t */
|
||||
aom_codec_get_cx_data_fn_t
|
||||
get_cx_data; /**< \copydoc ::aom_codec_get_cx_data_fn_t */
|
||||
aom_codec_enc_config_set_fn_t
|
||||
cfg_set; /**< \copydoc ::aom_codec_enc_config_set_fn_t */
|
||||
aom_codec_get_global_headers_fn_t
|
||||
get_glob_hdrs; /**< \copydoc ::aom_codec_get_global_headers_fn_t */
|
||||
aom_codec_get_preview_frame_fn_t
|
||||
get_preview; /**< \copydoc ::aom_codec_get_preview_frame_fn_t */
|
||||
} enc;
|
||||
aom_codec_set_option_fn_t set_option;
|
||||
};
|
||||
|
||||
/*!\brief Instance private storage
|
||||
*
|
||||
* This structure is allocated by the algorithm's init function. It can be
|
||||
* extended in one of two ways. First, a second, algorithm specific structure
|
||||
* can be allocated and the priv member pointed to it. Alternatively, this
|
||||
* structure can be made the first member of the algorithm specific structure,
|
||||
* and the pointer cast to the proper type.
|
||||
*/
|
||||
struct aom_codec_priv {
|
||||
const char *err_detail;
|
||||
aom_codec_flags_t init_flags;
|
||||
struct {
|
||||
aom_fixed_buf_t cx_data_dst_buf;
|
||||
unsigned int cx_data_pad_before;
|
||||
unsigned int cx_data_pad_after;
|
||||
aom_codec_cx_pkt_t cx_data_pkt;
|
||||
} enc;
|
||||
};
|
||||
|
||||
#define CAST(id, arg) va_arg((arg), aom_codec_control_type_##id)
|
||||
|
||||
/* Internal Utility Functions
|
||||
*
|
||||
* The following functions are intended to be used inside algorithms as
|
||||
* utilities for manipulating aom_codec_* data structures.
|
||||
*/
|
||||
struct aom_codec_pkt_list {
|
||||
unsigned int cnt;
|
||||
unsigned int max;
|
||||
struct aom_codec_cx_pkt pkts[1];
|
||||
};
|
||||
|
||||
#define aom_codec_pkt_list_decl(n) \
|
||||
union { \
|
||||
struct aom_codec_pkt_list head; \
|
||||
struct { \
|
||||
struct aom_codec_pkt_list head; \
|
||||
struct aom_codec_cx_pkt pkts[n]; \
|
||||
} alloc; \
|
||||
}
|
||||
|
||||
#define aom_codec_pkt_list_init(m) \
|
||||
(m)->alloc.head.cnt = 0, \
|
||||
(m)->alloc.head.max = sizeof((m)->alloc.pkts) / sizeof((m)->alloc.pkts[0])
|
||||
|
||||
int aom_codec_pkt_list_add(struct aom_codec_pkt_list *,
|
||||
const struct aom_codec_cx_pkt *);
|
||||
|
||||
const aom_codec_cx_pkt_t *aom_codec_pkt_list_get(
|
||||
struct aom_codec_pkt_list *list, aom_codec_iter_t *iter);
|
||||
|
||||
#include <stdio.h>
|
||||
#include <setjmp.h>
|
||||
|
||||
struct aom_internal_error_info {
|
||||
aom_codec_err_t error_code;
|
||||
int has_detail;
|
||||
char detail[ARG_ERR_MSG_MAX_LEN];
|
||||
int setjmp; // Boolean: whether 'jmp' is valid.
|
||||
jmp_buf jmp;
|
||||
};
|
||||
|
||||
#define CLANG_ANALYZER_NORETURN
|
||||
#if defined(__has_feature)
|
||||
#if __has_feature(attribute_analyzer_noreturn)
|
||||
#undef CLANG_ANALYZER_NORETURN
|
||||
#define CLANG_ANALYZER_NORETURN __attribute__((analyzer_noreturn))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Tells the compiler to perform `printf` format string checking if the
|
||||
// compiler supports it; see the 'format' attribute in
|
||||
// <https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html>.
|
||||
#define LIBAOM_FORMAT_PRINTF(string_index, first_to_check)
|
||||
#if defined(__has_attribute)
|
||||
#if __has_attribute(format)
|
||||
#undef LIBAOM_FORMAT_PRINTF
|
||||
#define LIBAOM_FORMAT_PRINTF(string_index, first_to_check) \
|
||||
__attribute__((__format__(__printf__, string_index, first_to_check)))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void aom_internal_error(struct aom_internal_error_info *info,
|
||||
aom_codec_err_t error, const char *fmt, ...)
|
||||
LIBAOM_FORMAT_PRINTF(3, 4) CLANG_ANALYZER_NORETURN;
|
||||
|
||||
void aom_merge_corrupted_flag(int *corrupted, int value);
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif // AOM_AOM_INTERNAL_AOM_CODEC_INTERNAL_H_
|
||||
@@ -1,93 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
|
||||
/*!\file
|
||||
* \brief Describes the internal functions associated with the aom image
|
||||
* descriptor.
|
||||
*
|
||||
*/
|
||||
#ifndef AOM_AOM_INTERNAL_AOM_IMAGE_INTERNAL_H_
|
||||
#define AOM_AOM_INTERNAL_AOM_IMAGE_INTERNAL_H_
|
||||
|
||||
#include "aom/aom_image.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*!\brief Array of aom_metadata structs for an image. */
|
||||
struct aom_metadata_array {
|
||||
size_t sz; /* Number of metadata structs in the list */
|
||||
aom_metadata_t **metadata_array; /* Array of metadata structs */
|
||||
};
|
||||
|
||||
/*!\brief Alloc memory for aom_metadata_array struct.
|
||||
*
|
||||
* Allocate memory for aom_metadata_array struct.
|
||||
* If sz is 0 the aom_metadata_array struct's internal buffer list will be
|
||||
* NULL, but the aom_metadata_array struct itself will still be allocated.
|
||||
* Returns a pointer to the allocated struct or NULL on failure.
|
||||
*
|
||||
* \param[in] sz Size of internal metadata list buffer
|
||||
*/
|
||||
aom_metadata_array_t *aom_img_metadata_array_alloc(size_t sz);
|
||||
|
||||
/*!\brief Free metadata array struct.
|
||||
*
|
||||
* Free metadata array struct and all metadata structs inside.
|
||||
*
|
||||
* \param[in] arr Metadata array struct pointer
|
||||
*/
|
||||
void aom_img_metadata_array_free(aom_metadata_array_t *arr);
|
||||
|
||||
typedef void *(*aom_alloc_img_data_cb_fn_t)(void *priv, size_t size);
|
||||
|
||||
/*!\brief Open a descriptor, allocating storage for the underlying image by
|
||||
* using the provided callback function.
|
||||
*
|
||||
* Returns a descriptor for storing an image of the given format. The storage
|
||||
* for the image is allocated by using the provided callback function. Unlike
|
||||
* aom_img_alloc(), the returned descriptor does not own the storage for the
|
||||
* image. The caller is responsible for freeing the storage for the image.
|
||||
*
|
||||
* Note: If the callback function is invoked and succeeds,
|
||||
* aom_img_alloc_with_cb() is guaranteed to succeed. Therefore, if
|
||||
* aom_img_alloc_with_cb() fails, the caller is assured that no storage was
|
||||
* allocated.
|
||||
*
|
||||
* \param[in] img Pointer to storage for descriptor. If this parameter
|
||||
* is NULL, the storage for the descriptor will be
|
||||
* allocated on the heap.
|
||||
* \param[in] fmt Format for the image
|
||||
* \param[in] d_w Width of the image
|
||||
* \param[in] d_h Height of the image
|
||||
* \param[in] align Alignment, in bytes, of the image buffer and
|
||||
* each row in the image (stride).
|
||||
* \param[in] alloc_cb Callback function used to allocate storage for the
|
||||
* image.
|
||||
* \param[in] cb_priv The first argument ('priv') for the callback
|
||||
* function.
|
||||
*
|
||||
* \return Returns a pointer to the initialized image descriptor. If the img
|
||||
* parameter is non-null, the value of the img parameter will be
|
||||
* returned.
|
||||
*/
|
||||
aom_image_t *aom_img_alloc_with_cb(aom_image_t *img, aom_img_fmt_t fmt,
|
||||
unsigned int d_w, unsigned int d_h,
|
||||
unsigned int align,
|
||||
aom_alloc_img_data_cb_fn_t alloc_cb,
|
||||
void *cb_priv);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif // AOM_AOM_INTERNAL_AOM_IMAGE_INTERNAL_H_
|
||||
@@ -1,170 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
|
||||
/*!\file
|
||||
* \brief Provides the high level interface to wrap decoder algorithms.
|
||||
*
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "config/aom_config.h"
|
||||
#include "config/aom_version.h"
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom/internal/aom_codec_internal.h"
|
||||
|
||||
int aom_codec_version(void) { return VERSION_PACKED; }
|
||||
|
||||
const char *aom_codec_version_str(void) { return VERSION_STRING_NOSP; }
|
||||
|
||||
const char *aom_codec_version_extra_str(void) { return VERSION_EXTRA; }
|
||||
|
||||
const char *aom_codec_iface_name(aom_codec_iface_t *iface) {
|
||||
return iface ? iface->name : "<invalid interface>";
|
||||
}
|
||||
|
||||
const char *aom_codec_err_to_string(aom_codec_err_t err) {
|
||||
switch (err) {
|
||||
case AOM_CODEC_OK: return "Success";
|
||||
case AOM_CODEC_ERROR: return "Unspecified internal error";
|
||||
case AOM_CODEC_MEM_ERROR: return "Memory allocation error";
|
||||
case AOM_CODEC_ABI_MISMATCH: return "ABI version mismatch";
|
||||
case AOM_CODEC_INCAPABLE:
|
||||
return "Codec does not implement requested capability";
|
||||
case AOM_CODEC_UNSUP_BITSTREAM:
|
||||
return "Bitstream not supported by this decoder";
|
||||
case AOM_CODEC_UNSUP_FEATURE:
|
||||
return "Bitstream required feature not supported by this decoder";
|
||||
case AOM_CODEC_CORRUPT_FRAME: return "Corrupt frame detected";
|
||||
case AOM_CODEC_INVALID_PARAM: return "Invalid parameter";
|
||||
case AOM_CODEC_LIST_END: return "End of iterated list";
|
||||
}
|
||||
|
||||
return "Unrecognized error code";
|
||||
}
|
||||
|
||||
const char *aom_codec_error(aom_codec_ctx_t *ctx) {
|
||||
return (ctx) ? aom_codec_err_to_string(ctx->err)
|
||||
: aom_codec_err_to_string(AOM_CODEC_INVALID_PARAM);
|
||||
}
|
||||
|
||||
const char *aom_codec_error_detail(aom_codec_ctx_t *ctx) {
|
||||
if (ctx && ctx->err)
|
||||
return ctx->priv ? ctx->priv->err_detail : ctx->err_detail;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
aom_codec_err_t aom_codec_destroy(aom_codec_ctx_t *ctx) {
|
||||
if (!ctx) {
|
||||
return AOM_CODEC_INVALID_PARAM;
|
||||
}
|
||||
if (!ctx->iface || !ctx->priv) {
|
||||
ctx->err = AOM_CODEC_ERROR;
|
||||
return AOM_CODEC_ERROR;
|
||||
}
|
||||
ctx->iface->destroy((aom_codec_alg_priv_t *)ctx->priv);
|
||||
ctx->iface = NULL;
|
||||
ctx->name = NULL;
|
||||
ctx->priv = NULL;
|
||||
ctx->err = AOM_CODEC_OK;
|
||||
return AOM_CODEC_OK;
|
||||
}
|
||||
|
||||
aom_codec_caps_t aom_codec_get_caps(aom_codec_iface_t *iface) {
|
||||
return (iface) ? iface->caps : 0;
|
||||
}
|
||||
|
||||
aom_codec_err_t aom_codec_control(aom_codec_ctx_t *ctx, int ctrl_id, ...) {
|
||||
if (!ctx) {
|
||||
return AOM_CODEC_INVALID_PARAM;
|
||||
}
|
||||
// Control ID must be non-zero.
|
||||
if (!ctrl_id) {
|
||||
ctx->err = AOM_CODEC_INVALID_PARAM;
|
||||
return AOM_CODEC_INVALID_PARAM;
|
||||
}
|
||||
if (!ctx->iface || !ctx->priv || !ctx->iface->ctrl_maps) {
|
||||
ctx->err = AOM_CODEC_ERROR;
|
||||
return AOM_CODEC_ERROR;
|
||||
}
|
||||
|
||||
// "ctrl_maps" is an array of (control ID, function pointer) elements,
|
||||
// with CTRL_MAP_END as a sentinel.
|
||||
for (aom_codec_ctrl_fn_map_t *entry = ctx->iface->ctrl_maps;
|
||||
!at_ctrl_map_end(entry); ++entry) {
|
||||
if (entry->ctrl_id == ctrl_id) {
|
||||
va_list ap;
|
||||
va_start(ap, ctrl_id);
|
||||
ctx->err = entry->fn((aom_codec_alg_priv_t *)ctx->priv, ap);
|
||||
va_end(ap);
|
||||
return ctx->err;
|
||||
}
|
||||
}
|
||||
ctx->err = AOM_CODEC_ERROR;
|
||||
ctx->priv->err_detail = "Invalid control ID";
|
||||
return AOM_CODEC_ERROR;
|
||||
}
|
||||
|
||||
aom_codec_err_t aom_codec_set_option(aom_codec_ctx_t *ctx, const char *name,
|
||||
const char *value) {
|
||||
if (!ctx) {
|
||||
return AOM_CODEC_INVALID_PARAM;
|
||||
}
|
||||
if (!ctx->iface || !ctx->priv || !ctx->iface->set_option) {
|
||||
ctx->err = AOM_CODEC_ERROR;
|
||||
return AOM_CODEC_ERROR;
|
||||
}
|
||||
ctx->err =
|
||||
ctx->iface->set_option((aom_codec_alg_priv_t *)ctx->priv, name, value);
|
||||
return ctx->err;
|
||||
}
|
||||
|
||||
void aom_internal_error(struct aom_internal_error_info *info,
|
||||
aom_codec_err_t error, const char *fmt, ...) {
|
||||
va_list ap;
|
||||
|
||||
info->error_code = error;
|
||||
info->has_detail = 0;
|
||||
|
||||
if (fmt) {
|
||||
size_t sz = sizeof(info->detail);
|
||||
|
||||
info->has_detail = 1;
|
||||
va_start(ap, fmt);
|
||||
vsnprintf(info->detail, sz - 1, fmt, ap);
|
||||
va_end(ap);
|
||||
info->detail[sz - 1] = '\0';
|
||||
}
|
||||
|
||||
if (info->setjmp) longjmp(info->jmp, info->error_code);
|
||||
}
|
||||
|
||||
void aom_merge_corrupted_flag(int *corrupted, int value) {
|
||||
*corrupted |= value;
|
||||
}
|
||||
|
||||
const char *aom_obu_type_to_string(OBU_TYPE type) {
|
||||
switch (type) {
|
||||
case OBU_SEQUENCE_HEADER: return "OBU_SEQUENCE_HEADER";
|
||||
case OBU_TEMPORAL_DELIMITER: return "OBU_TEMPORAL_DELIMITER";
|
||||
case OBU_FRAME_HEADER: return "OBU_FRAME_HEADER";
|
||||
case OBU_REDUNDANT_FRAME_HEADER: return "OBU_REDUNDANT_FRAME_HEADER";
|
||||
case OBU_FRAME: return "OBU_FRAME";
|
||||
case OBU_TILE_GROUP: return "OBU_TILE_GROUP";
|
||||
case OBU_METADATA: return "OBU_METADATA";
|
||||
case OBU_TILE_LIST: return "OBU_TILE_LIST";
|
||||
case OBU_PADDING: return "OBU_PADDING";
|
||||
default: break;
|
||||
}
|
||||
return "<Invalid OBU Type>";
|
||||
}
|
||||
@@ -1,137 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
|
||||
/*!\file
|
||||
* \brief Provides the high level interface to wrap decoder algorithms.
|
||||
*
|
||||
*/
|
||||
#include <string.h>
|
||||
#include "aom/internal/aom_codec_internal.h"
|
||||
|
||||
#define SAVE_STATUS(ctx, var) (ctx ? (ctx->err = var) : var)
|
||||
|
||||
static aom_codec_alg_priv_t *get_alg_priv(aom_codec_ctx_t *ctx) {
|
||||
return (aom_codec_alg_priv_t *)ctx->priv;
|
||||
}
|
||||
|
||||
aom_codec_err_t aom_codec_dec_init_ver(aom_codec_ctx_t *ctx,
|
||||
aom_codec_iface_t *iface,
|
||||
const aom_codec_dec_cfg_t *cfg,
|
||||
aom_codec_flags_t flags, int ver) {
|
||||
aom_codec_err_t res;
|
||||
|
||||
if (ver != AOM_DECODER_ABI_VERSION)
|
||||
res = AOM_CODEC_ABI_MISMATCH;
|
||||
else if (!ctx || !iface)
|
||||
res = AOM_CODEC_INVALID_PARAM;
|
||||
else if (iface->abi_version != AOM_CODEC_INTERNAL_ABI_VERSION)
|
||||
res = AOM_CODEC_ABI_MISMATCH;
|
||||
else if (!(iface->caps & AOM_CODEC_CAP_DECODER))
|
||||
res = AOM_CODEC_INCAPABLE;
|
||||
else {
|
||||
memset(ctx, 0, sizeof(*ctx));
|
||||
ctx->iface = iface;
|
||||
ctx->name = iface->name;
|
||||
ctx->priv = NULL;
|
||||
ctx->init_flags = flags;
|
||||
ctx->config.dec = cfg;
|
||||
|
||||
res = ctx->iface->init(ctx);
|
||||
if (res) {
|
||||
ctx->err_detail = ctx->priv ? ctx->priv->err_detail : NULL;
|
||||
aom_codec_destroy(ctx);
|
||||
}
|
||||
}
|
||||
|
||||
return SAVE_STATUS(ctx, res);
|
||||
}
|
||||
|
||||
aom_codec_err_t aom_codec_peek_stream_info(aom_codec_iface_t *iface,
|
||||
const uint8_t *data, size_t data_sz,
|
||||
aom_codec_stream_info_t *si) {
|
||||
aom_codec_err_t res;
|
||||
|
||||
if (!iface || !data || !data_sz || !si) {
|
||||
res = AOM_CODEC_INVALID_PARAM;
|
||||
} else {
|
||||
/* Set default/unknown values */
|
||||
si->w = 0;
|
||||
si->h = 0;
|
||||
|
||||
res = iface->dec.peek_si(data, data_sz, si);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
aom_codec_err_t aom_codec_get_stream_info(aom_codec_ctx_t *ctx,
|
||||
aom_codec_stream_info_t *si) {
|
||||
aom_codec_err_t res;
|
||||
|
||||
if (!ctx || !si) {
|
||||
res = AOM_CODEC_INVALID_PARAM;
|
||||
} else if (!ctx->iface || !ctx->priv) {
|
||||
res = AOM_CODEC_ERROR;
|
||||
} else {
|
||||
/* Set default/unknown values */
|
||||
si->w = 0;
|
||||
si->h = 0;
|
||||
|
||||
res = ctx->iface->dec.get_si(get_alg_priv(ctx), si);
|
||||
}
|
||||
|
||||
return SAVE_STATUS(ctx, res);
|
||||
}
|
||||
|
||||
aom_codec_err_t aom_codec_decode(aom_codec_ctx_t *ctx, const uint8_t *data,
|
||||
size_t data_sz, void *user_priv) {
|
||||
aom_codec_err_t res;
|
||||
|
||||
if (!ctx)
|
||||
res = AOM_CODEC_INVALID_PARAM;
|
||||
else if (!ctx->iface || !ctx->priv)
|
||||
res = AOM_CODEC_ERROR;
|
||||
else {
|
||||
res = ctx->iface->dec.decode(get_alg_priv(ctx), data, data_sz, user_priv);
|
||||
}
|
||||
|
||||
return SAVE_STATUS(ctx, res);
|
||||
}
|
||||
|
||||
aom_image_t *aom_codec_get_frame(aom_codec_ctx_t *ctx, aom_codec_iter_t *iter) {
|
||||
aom_image_t *img;
|
||||
|
||||
if (!ctx || !iter || !ctx->iface || !ctx->priv)
|
||||
img = NULL;
|
||||
else
|
||||
img = ctx->iface->dec.get_frame(get_alg_priv(ctx), iter);
|
||||
|
||||
return img;
|
||||
}
|
||||
|
||||
aom_codec_err_t aom_codec_set_frame_buffer_functions(
|
||||
aom_codec_ctx_t *ctx, aom_get_frame_buffer_cb_fn_t cb_get,
|
||||
aom_release_frame_buffer_cb_fn_t cb_release, void *cb_priv) {
|
||||
aom_codec_err_t res;
|
||||
|
||||
if (!ctx || !cb_get || !cb_release) {
|
||||
res = AOM_CODEC_INVALID_PARAM;
|
||||
} else if (!ctx->iface || !ctx->priv) {
|
||||
res = AOM_CODEC_ERROR;
|
||||
} else if (!(ctx->iface->caps & AOM_CODEC_CAP_EXTERNAL_FRAME_BUFFER)) {
|
||||
res = AOM_CODEC_INCAPABLE;
|
||||
} else {
|
||||
res = ctx->iface->dec.set_fb_fn(get_alg_priv(ctx), cb_get, cb_release,
|
||||
cb_priv);
|
||||
}
|
||||
|
||||
return SAVE_STATUS(ctx, res);
|
||||
}
|
||||
@@ -1,323 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
|
||||
/*!\file
|
||||
* \brief Provides the high level interface to wrap encoder algorithms.
|
||||
*
|
||||
*/
|
||||
#include "config/aom_config.h"
|
||||
|
||||
#if HAVE_FEXCEPT
|
||||
#ifndef _GNU_SOURCE
|
||||
#define _GNU_SOURCE
|
||||
#endif
|
||||
#include <fenv.h>
|
||||
#endif
|
||||
|
||||
#include <limits.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "aom/aom_encoder.h"
|
||||
#include "aom/internal/aom_codec_internal.h"
|
||||
|
||||
#define SAVE_STATUS(ctx, var) (ctx ? (ctx->err = var) : var)
|
||||
|
||||
static aom_codec_alg_priv_t *get_alg_priv(aom_codec_ctx_t *ctx) {
|
||||
return (aom_codec_alg_priv_t *)ctx->priv;
|
||||
}
|
||||
|
||||
aom_codec_err_t aom_codec_enc_init_ver(aom_codec_ctx_t *ctx,
|
||||
aom_codec_iface_t *iface,
|
||||
const aom_codec_enc_cfg_t *cfg,
|
||||
aom_codec_flags_t flags, int ver) {
|
||||
aom_codec_err_t res;
|
||||
// The value of AOM_ENCODER_ABI_VERSION in libaom v3.0.0 and v3.1.0 - v3.1.3.
|
||||
//
|
||||
// We are compatible with these older libaom releases. AOM_ENCODER_ABI_VERSION
|
||||
// was incremented after these releases for two reasons:
|
||||
// 1. AOM_ENCODER_ABI_VERSION takes contribution from
|
||||
// AOM_EXT_PART_ABI_VERSION. The external partition API is still
|
||||
// experimental, so it should not be considered as part of the stable ABI.
|
||||
// fd9ed8366 External partition: Define APIs
|
||||
// https://aomedia-review.googlesource.com/c/aom/+/135663
|
||||
// 2. As a way to detect the presence of speeds 7-9 in all-intra mode. I (wtc)
|
||||
// suggested this change because I misunderstood how
|
||||
// AOM_ENCODER_ABI_VERSION was used.
|
||||
// bbdfa68d1 AllIntra: Redefine all-intra mode speed features for speed 7+
|
||||
// https://aomedia-review.googlesource.com/c/aom/+/140624
|
||||
const int aom_encoder_abi_version_25 = 25;
|
||||
|
||||
// TODO(bug aomedia:3228): Remove the check for aom_encoder_abi_version_25 in
|
||||
// libaom v4.0.0.
|
||||
if (ver != AOM_ENCODER_ABI_VERSION && ver != aom_encoder_abi_version_25)
|
||||
res = AOM_CODEC_ABI_MISMATCH;
|
||||
else if (!ctx || !iface || !cfg)
|
||||
res = AOM_CODEC_INVALID_PARAM;
|
||||
else if (iface->abi_version != AOM_CODEC_INTERNAL_ABI_VERSION)
|
||||
res = AOM_CODEC_ABI_MISMATCH;
|
||||
else if (!(iface->caps & AOM_CODEC_CAP_ENCODER))
|
||||
res = AOM_CODEC_INCAPABLE;
|
||||
else if ((flags & AOM_CODEC_USE_PSNR) && !(iface->caps & AOM_CODEC_CAP_PSNR))
|
||||
res = AOM_CODEC_INCAPABLE;
|
||||
else if (cfg->g_bit_depth > 8 && (flags & AOM_CODEC_USE_HIGHBITDEPTH) == 0) {
|
||||
res = AOM_CODEC_INVALID_PARAM;
|
||||
ctx->err_detail =
|
||||
"High bit-depth used without the AOM_CODEC_USE_HIGHBITDEPTH flag.";
|
||||
} else {
|
||||
ctx->iface = iface;
|
||||
ctx->name = iface->name;
|
||||
ctx->priv = NULL;
|
||||
ctx->init_flags = flags;
|
||||
ctx->config.enc = cfg;
|
||||
res = ctx->iface->init(ctx);
|
||||
|
||||
if (res) {
|
||||
ctx->err_detail = ctx->priv ? ctx->priv->err_detail : NULL;
|
||||
aom_codec_destroy(ctx);
|
||||
}
|
||||
}
|
||||
|
||||
return SAVE_STATUS(ctx, res);
|
||||
}
|
||||
|
||||
aom_codec_err_t aom_codec_enc_config_default(aom_codec_iface_t *iface,
|
||||
aom_codec_enc_cfg_t *cfg,
|
||||
unsigned int usage) {
|
||||
aom_codec_err_t res;
|
||||
int i;
|
||||
|
||||
if (!iface || !cfg)
|
||||
res = AOM_CODEC_INVALID_PARAM;
|
||||
else if (!(iface->caps & AOM_CODEC_CAP_ENCODER))
|
||||
res = AOM_CODEC_INCAPABLE;
|
||||
else {
|
||||
res = AOM_CODEC_INVALID_PARAM;
|
||||
|
||||
for (i = 0; i < iface->enc.cfg_count; ++i) {
|
||||
if (iface->enc.cfgs[i].g_usage == usage) {
|
||||
*cfg = iface->enc.cfgs[i];
|
||||
res = AOM_CODEC_OK;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* default values */
|
||||
if (cfg) {
|
||||
memset(&cfg->encoder_cfg, 0, sizeof(cfg->encoder_cfg));
|
||||
cfg->encoder_cfg.super_block_size = 0; // Dynamic
|
||||
cfg->encoder_cfg.max_partition_size = 128;
|
||||
cfg->encoder_cfg.min_partition_size = 4;
|
||||
cfg->encoder_cfg.disable_trellis_quant = 3;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
#if ARCH_X86 || ARCH_X86_64
|
||||
/* On X86, disable the x87 unit's internal 80 bit precision for better
|
||||
* consistency with the SSE unit's 64 bit precision.
|
||||
*/
|
||||
#include "aom_ports/x86.h"
|
||||
#define FLOATING_POINT_SET_PRECISION \
|
||||
unsigned short x87_orig_mode = x87_set_double_precision();
|
||||
#define FLOATING_POINT_RESTORE_PRECISION x87_set_control_word(x87_orig_mode);
|
||||
#else
|
||||
#define FLOATING_POINT_SET_PRECISION
|
||||
#define FLOATING_POINT_RESTORE_PRECISION
|
||||
#endif // ARCH_X86 || ARCH_X86_64
|
||||
|
||||
#if HAVE_FEXCEPT && CONFIG_DEBUG
|
||||
#define FLOATING_POINT_SET_EXCEPTIONS \
|
||||
const int float_excepts = \
|
||||
feenableexcept(FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW);
|
||||
#define FLOATING_POINT_RESTORE_EXCEPTIONS \
|
||||
fedisableexcept(FE_ALL_EXCEPT); \
|
||||
feenableexcept(float_excepts);
|
||||
#else
|
||||
#define FLOATING_POINT_SET_EXCEPTIONS
|
||||
#define FLOATING_POINT_RESTORE_EXCEPTIONS
|
||||
#endif // HAVE_FEXCEPT && CONFIG_DEBUG
|
||||
|
||||
/* clang-format off */
|
||||
#define FLOATING_POINT_INIT \
|
||||
do { \
|
||||
FLOATING_POINT_SET_PRECISION \
|
||||
FLOATING_POINT_SET_EXCEPTIONS
|
||||
|
||||
#define FLOATING_POINT_RESTORE \
|
||||
FLOATING_POINT_RESTORE_EXCEPTIONS \
|
||||
FLOATING_POINT_RESTORE_PRECISION \
|
||||
} while (0);
|
||||
/* clang-format on */
|
||||
|
||||
aom_codec_err_t aom_codec_encode(aom_codec_ctx_t *ctx, const aom_image_t *img,
|
||||
aom_codec_pts_t pts, unsigned long duration,
|
||||
aom_enc_frame_flags_t flags) {
|
||||
aom_codec_err_t res = AOM_CODEC_OK;
|
||||
|
||||
if (!ctx || (img && !duration))
|
||||
res = AOM_CODEC_INVALID_PARAM;
|
||||
else if (!ctx->iface || !ctx->priv)
|
||||
res = AOM_CODEC_ERROR;
|
||||
else if (!(ctx->iface->caps & AOM_CODEC_CAP_ENCODER))
|
||||
res = AOM_CODEC_INCAPABLE;
|
||||
else {
|
||||
/* Execute in a normalized floating point environment, if the platform
|
||||
* requires it.
|
||||
*/
|
||||
FLOATING_POINT_INIT
|
||||
res = ctx->iface->enc.encode(get_alg_priv(ctx), img, pts, duration, flags);
|
||||
FLOATING_POINT_RESTORE
|
||||
}
|
||||
|
||||
return SAVE_STATUS(ctx, res);
|
||||
}
|
||||
|
||||
const aom_codec_cx_pkt_t *aom_codec_get_cx_data(aom_codec_ctx_t *ctx,
|
||||
aom_codec_iter_t *iter) {
|
||||
const aom_codec_cx_pkt_t *pkt = NULL;
|
||||
|
||||
if (ctx) {
|
||||
if (!iter)
|
||||
ctx->err = AOM_CODEC_INVALID_PARAM;
|
||||
else if (!ctx->iface || !ctx->priv)
|
||||
ctx->err = AOM_CODEC_ERROR;
|
||||
else if (!(ctx->iface->caps & AOM_CODEC_CAP_ENCODER))
|
||||
ctx->err = AOM_CODEC_INCAPABLE;
|
||||
else
|
||||
pkt = ctx->iface->enc.get_cx_data(get_alg_priv(ctx), iter);
|
||||
}
|
||||
|
||||
if (pkt && pkt->kind == AOM_CODEC_CX_FRAME_PKT) {
|
||||
// If the application has specified a destination area for the
|
||||
// compressed data, and the codec has not placed the data there,
|
||||
// and it fits, copy it.
|
||||
aom_codec_priv_t *const priv = ctx->priv;
|
||||
char *const dst_buf = (char *)priv->enc.cx_data_dst_buf.buf;
|
||||
|
||||
if (dst_buf && pkt->data.raw.buf != dst_buf &&
|
||||
pkt->data.raw.sz + priv->enc.cx_data_pad_before +
|
||||
priv->enc.cx_data_pad_after <=
|
||||
priv->enc.cx_data_dst_buf.sz) {
|
||||
aom_codec_cx_pkt_t *modified_pkt = &priv->enc.cx_data_pkt;
|
||||
|
||||
memcpy(dst_buf + priv->enc.cx_data_pad_before, pkt->data.raw.buf,
|
||||
pkt->data.raw.sz);
|
||||
*modified_pkt = *pkt;
|
||||
modified_pkt->data.raw.buf = dst_buf;
|
||||
modified_pkt->data.raw.sz +=
|
||||
priv->enc.cx_data_pad_before + priv->enc.cx_data_pad_after;
|
||||
pkt = modified_pkt;
|
||||
}
|
||||
|
||||
if (dst_buf == pkt->data.raw.buf) {
|
||||
priv->enc.cx_data_dst_buf.buf = dst_buf + pkt->data.raw.sz;
|
||||
priv->enc.cx_data_dst_buf.sz -= pkt->data.raw.sz;
|
||||
}
|
||||
}
|
||||
|
||||
return pkt;
|
||||
}
|
||||
|
||||
aom_codec_err_t aom_codec_set_cx_data_buf(aom_codec_ctx_t *ctx,
|
||||
const aom_fixed_buf_t *buf,
|
||||
unsigned int pad_before,
|
||||
unsigned int pad_after) {
|
||||
if (!ctx || !ctx->priv) return AOM_CODEC_INVALID_PARAM;
|
||||
|
||||
if (buf) {
|
||||
ctx->priv->enc.cx_data_dst_buf = *buf;
|
||||
ctx->priv->enc.cx_data_pad_before = pad_before;
|
||||
ctx->priv->enc.cx_data_pad_after = pad_after;
|
||||
} else {
|
||||
ctx->priv->enc.cx_data_dst_buf.buf = NULL;
|
||||
ctx->priv->enc.cx_data_dst_buf.sz = 0;
|
||||
ctx->priv->enc.cx_data_pad_before = 0;
|
||||
ctx->priv->enc.cx_data_pad_after = 0;
|
||||
}
|
||||
|
||||
return AOM_CODEC_OK;
|
||||
}
|
||||
|
||||
const aom_image_t *aom_codec_get_preview_frame(aom_codec_ctx_t *ctx) {
|
||||
aom_image_t *img = NULL;
|
||||
|
||||
if (ctx) {
|
||||
if (!ctx->iface || !ctx->priv)
|
||||
ctx->err = AOM_CODEC_ERROR;
|
||||
else if (!(ctx->iface->caps & AOM_CODEC_CAP_ENCODER))
|
||||
ctx->err = AOM_CODEC_INCAPABLE;
|
||||
else if (!ctx->iface->enc.get_preview)
|
||||
ctx->err = AOM_CODEC_INCAPABLE;
|
||||
else
|
||||
img = ctx->iface->enc.get_preview(get_alg_priv(ctx));
|
||||
}
|
||||
|
||||
return img;
|
||||
}
|
||||
|
||||
aom_fixed_buf_t *aom_codec_get_global_headers(aom_codec_ctx_t *ctx) {
|
||||
aom_fixed_buf_t *buf = NULL;
|
||||
|
||||
if (ctx) {
|
||||
if (!ctx->iface || !ctx->priv)
|
||||
ctx->err = AOM_CODEC_ERROR;
|
||||
else if (!(ctx->iface->caps & AOM_CODEC_CAP_ENCODER))
|
||||
ctx->err = AOM_CODEC_INCAPABLE;
|
||||
else if (!ctx->iface->enc.get_glob_hdrs)
|
||||
ctx->err = AOM_CODEC_INCAPABLE;
|
||||
else
|
||||
buf = ctx->iface->enc.get_glob_hdrs(get_alg_priv(ctx));
|
||||
}
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
aom_codec_err_t aom_codec_enc_config_set(aom_codec_ctx_t *ctx,
|
||||
const aom_codec_enc_cfg_t *cfg) {
|
||||
aom_codec_err_t res;
|
||||
|
||||
if (!ctx || !ctx->iface || !ctx->priv || !cfg)
|
||||
res = AOM_CODEC_INVALID_PARAM;
|
||||
else if (!(ctx->iface->caps & AOM_CODEC_CAP_ENCODER))
|
||||
res = AOM_CODEC_INCAPABLE;
|
||||
else
|
||||
res = ctx->iface->enc.cfg_set(get_alg_priv(ctx), cfg);
|
||||
|
||||
return SAVE_STATUS(ctx, res);
|
||||
}
|
||||
|
||||
int aom_codec_pkt_list_add(struct aom_codec_pkt_list *list,
|
||||
const struct aom_codec_cx_pkt *pkt) {
|
||||
if (list->cnt < list->max) {
|
||||
list->pkts[list->cnt++] = *pkt;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
const aom_codec_cx_pkt_t *aom_codec_pkt_list_get(
|
||||
struct aom_codec_pkt_list *list, aom_codec_iter_t *iter) {
|
||||
const aom_codec_cx_pkt_t *pkt;
|
||||
|
||||
if (!(*iter)) {
|
||||
*iter = list->pkts;
|
||||
}
|
||||
|
||||
pkt = (const aom_codec_cx_pkt_t *)*iter;
|
||||
|
||||
if ((size_t)(pkt - list->pkts) < list->cnt)
|
||||
*iter = pkt + 1;
|
||||
else
|
||||
pkt = NULL;
|
||||
|
||||
return pkt;
|
||||
}
|
||||
@@ -1,401 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "aom/aom_image.h"
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom/internal/aom_image_internal.h"
|
||||
#include "aom_mem/aom_mem.h"
|
||||
|
||||
static INLINE unsigned int align_image_dimension(unsigned int d,
|
||||
unsigned int subsampling,
|
||||
unsigned int size_align) {
|
||||
unsigned int align;
|
||||
|
||||
align = (1 << subsampling) - 1;
|
||||
align = (size_align - 1 > align) ? (size_align - 1) : align;
|
||||
return ((d + align) & ~align);
|
||||
}
|
||||
|
||||
static aom_image_t *img_alloc_helper(
|
||||
aom_image_t *img, aom_img_fmt_t fmt, unsigned int d_w, unsigned int d_h,
|
||||
unsigned int buf_align, unsigned int stride_align, unsigned int size_align,
|
||||
unsigned int border, unsigned char *img_data,
|
||||
aom_alloc_img_data_cb_fn_t alloc_cb, void *cb_priv) {
|
||||
/* NOTE: In this function, bit_depth is either 8 or 16 (if
|
||||
* AOM_IMG_FMT_HIGHBITDEPTH is set), never 10 or 12.
|
||||
*/
|
||||
unsigned int h, w, s, xcs, ycs, bps, bit_depth;
|
||||
unsigned int stride_in_bytes;
|
||||
|
||||
if (img != NULL) memset(img, 0, sizeof(aom_image_t));
|
||||
|
||||
/* Treat align==0 like align==1 */
|
||||
if (!buf_align) buf_align = 1;
|
||||
|
||||
/* Validate alignment (must be power of 2) */
|
||||
if (buf_align & (buf_align - 1)) goto fail;
|
||||
|
||||
/* Treat align==0 like align==1 */
|
||||
if (!stride_align) stride_align = 1;
|
||||
|
||||
/* Validate alignment (must be power of 2) */
|
||||
if (stride_align & (stride_align - 1)) goto fail;
|
||||
|
||||
/* Treat align==0 like align==1 */
|
||||
if (!size_align) size_align = 1;
|
||||
|
||||
/* Validate alignment (must be power of 2) */
|
||||
if (size_align & (size_align - 1)) goto fail;
|
||||
|
||||
/* Get sample size for this format */
|
||||
switch (fmt) {
|
||||
case AOM_IMG_FMT_I420:
|
||||
case AOM_IMG_FMT_YV12:
|
||||
case AOM_IMG_FMT_NV12:
|
||||
case AOM_IMG_FMT_AOMI420:
|
||||
case AOM_IMG_FMT_AOMYV12: bps = 12; break;
|
||||
case AOM_IMG_FMT_I422: bps = 16; break;
|
||||
case AOM_IMG_FMT_I444: bps = 24; break;
|
||||
case AOM_IMG_FMT_YV1216:
|
||||
case AOM_IMG_FMT_I42016: bps = 24; break;
|
||||
case AOM_IMG_FMT_I42216: bps = 32; break;
|
||||
case AOM_IMG_FMT_I44416: bps = 48; break;
|
||||
default: bps = 16; break;
|
||||
}
|
||||
|
||||
bit_depth = (fmt & AOM_IMG_FMT_HIGHBITDEPTH) ? 16 : 8;
|
||||
|
||||
/* Get chroma shift values for this format */
|
||||
switch (fmt) {
|
||||
case AOM_IMG_FMT_I420:
|
||||
case AOM_IMG_FMT_YV12:
|
||||
case AOM_IMG_FMT_NV12:
|
||||
case AOM_IMG_FMT_AOMI420:
|
||||
case AOM_IMG_FMT_AOMYV12:
|
||||
case AOM_IMG_FMT_I422:
|
||||
case AOM_IMG_FMT_I42016:
|
||||
case AOM_IMG_FMT_YV1216:
|
||||
case AOM_IMG_FMT_I42216: xcs = 1; break;
|
||||
default: xcs = 0; break;
|
||||
}
|
||||
|
||||
switch (fmt) {
|
||||
case AOM_IMG_FMT_I420:
|
||||
case AOM_IMG_FMT_YV12:
|
||||
case AOM_IMG_FMT_NV12:
|
||||
case AOM_IMG_FMT_AOMI420:
|
||||
case AOM_IMG_FMT_AOMYV12:
|
||||
case AOM_IMG_FMT_YV1216:
|
||||
case AOM_IMG_FMT_I42016: ycs = 1; break;
|
||||
default: ycs = 0; break;
|
||||
}
|
||||
|
||||
/* Calculate storage sizes given the chroma subsampling */
|
||||
w = align_image_dimension(d_w, xcs, size_align);
|
||||
h = align_image_dimension(d_h, ycs, size_align);
|
||||
|
||||
s = (fmt & AOM_IMG_FMT_PLANAR) ? w : bps * w / bit_depth;
|
||||
s = (s + 2 * border + stride_align - 1) & ~(stride_align - 1);
|
||||
stride_in_bytes = s * bit_depth / 8;
|
||||
|
||||
/* Allocate the new image */
|
||||
if (!img) {
|
||||
img = (aom_image_t *)calloc(1, sizeof(aom_image_t));
|
||||
|
||||
if (!img) goto fail;
|
||||
|
||||
img->self_allocd = 1;
|
||||
}
|
||||
|
||||
img->img_data = img_data;
|
||||
|
||||
if (!img_data) {
|
||||
const uint64_t alloc_size =
|
||||
(fmt & AOM_IMG_FMT_PLANAR)
|
||||
? (uint64_t)(h + 2 * border) * stride_in_bytes * bps / bit_depth
|
||||
: (uint64_t)(h + 2 * border) * stride_in_bytes;
|
||||
|
||||
if (alloc_size != (size_t)alloc_size) goto fail;
|
||||
|
||||
if (alloc_cb) {
|
||||
const size_t padded_alloc_size = (size_t)alloc_size + buf_align - 1;
|
||||
img->img_data = (uint8_t *)alloc_cb(cb_priv, padded_alloc_size);
|
||||
if (img->img_data) {
|
||||
img->img_data = (uint8_t *)aom_align_addr(img->img_data, buf_align);
|
||||
}
|
||||
img->img_data_owner = 0;
|
||||
} else {
|
||||
img->img_data = (uint8_t *)aom_memalign(buf_align, (size_t)alloc_size);
|
||||
img->img_data_owner = 1;
|
||||
}
|
||||
img->sz = (size_t)alloc_size;
|
||||
}
|
||||
|
||||
if (!img->img_data) goto fail;
|
||||
|
||||
img->fmt = fmt;
|
||||
img->bit_depth = bit_depth;
|
||||
// aligned width and aligned height
|
||||
img->w = w;
|
||||
img->h = h;
|
||||
img->x_chroma_shift = xcs;
|
||||
img->y_chroma_shift = ycs;
|
||||
img->bps = bps;
|
||||
|
||||
/* Calculate strides */
|
||||
img->stride[AOM_PLANE_Y] = stride_in_bytes;
|
||||
img->stride[AOM_PLANE_U] = img->stride[AOM_PLANE_V] = stride_in_bytes >> xcs;
|
||||
|
||||
if (fmt == AOM_IMG_FMT_NV12) {
|
||||
// Each row is a row of U and a row of V interleaved, so the stride is twice
|
||||
// as long.
|
||||
img->stride[AOM_PLANE_U] *= 2;
|
||||
img->stride[AOM_PLANE_V] = 0;
|
||||
}
|
||||
|
||||
/* Default viewport to entire image. (This aom_img_set_rect call always
|
||||
* succeeds.) */
|
||||
aom_img_set_rect(img, 0, 0, d_w, d_h, border);
|
||||
return img;
|
||||
|
||||
fail:
|
||||
aom_img_free(img);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
aom_image_t *aom_img_alloc(aom_image_t *img, aom_img_fmt_t fmt,
|
||||
unsigned int d_w, unsigned int d_h,
|
||||
unsigned int align) {
|
||||
return img_alloc_helper(img, fmt, d_w, d_h, align, align, 1, 0, NULL, NULL,
|
||||
NULL);
|
||||
}
|
||||
|
||||
aom_image_t *aom_img_alloc_with_cb(aom_image_t *img, aom_img_fmt_t fmt,
|
||||
unsigned int d_w, unsigned int d_h,
|
||||
unsigned int align,
|
||||
aom_alloc_img_data_cb_fn_t alloc_cb,
|
||||
void *cb_priv) {
|
||||
return img_alloc_helper(img, fmt, d_w, d_h, align, align, 1, 0, NULL,
|
||||
alloc_cb, cb_priv);
|
||||
}
|
||||
|
||||
aom_image_t *aom_img_wrap(aom_image_t *img, aom_img_fmt_t fmt, unsigned int d_w,
|
||||
unsigned int d_h, unsigned int stride_align,
|
||||
unsigned char *img_data) {
|
||||
/* Set buf_align = 1. It is ignored by img_alloc_helper because img_data is
|
||||
* not NULL. */
|
||||
return img_alloc_helper(img, fmt, d_w, d_h, 1, stride_align, 1, 0, img_data,
|
||||
NULL, NULL);
|
||||
}
|
||||
|
||||
aom_image_t *aom_img_alloc_with_border(aom_image_t *img, aom_img_fmt_t fmt,
|
||||
unsigned int d_w, unsigned int d_h,
|
||||
unsigned int align,
|
||||
unsigned int size_align,
|
||||
unsigned int border) {
|
||||
return img_alloc_helper(img, fmt, d_w, d_h, align, align, size_align, border,
|
||||
NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
int aom_img_set_rect(aom_image_t *img, unsigned int x, unsigned int y,
|
||||
unsigned int w, unsigned int h, unsigned int border) {
|
||||
if (x <= UINT_MAX - w && x + w <= img->w && y <= UINT_MAX - h &&
|
||||
y + h <= img->h) {
|
||||
img->d_w = w;
|
||||
img->d_h = h;
|
||||
|
||||
x += border;
|
||||
y += border;
|
||||
|
||||
/* Calculate plane pointers */
|
||||
if (!(img->fmt & AOM_IMG_FMT_PLANAR)) {
|
||||
img->planes[AOM_PLANE_PACKED] =
|
||||
img->img_data + x * img->bps / 8 + y * img->stride[AOM_PLANE_PACKED];
|
||||
} else {
|
||||
const int bytes_per_sample =
|
||||
(img->fmt & AOM_IMG_FMT_HIGHBITDEPTH) ? 2 : 1;
|
||||
unsigned char *data = img->img_data;
|
||||
|
||||
img->planes[AOM_PLANE_Y] =
|
||||
data + x * bytes_per_sample + y * img->stride[AOM_PLANE_Y];
|
||||
data += (img->h + 2 * border) * img->stride[AOM_PLANE_Y];
|
||||
|
||||
unsigned int uv_border_h = border >> img->y_chroma_shift;
|
||||
unsigned int uv_x = x >> img->x_chroma_shift;
|
||||
unsigned int uv_y = y >> img->y_chroma_shift;
|
||||
if (img->fmt == AOM_IMG_FMT_NV12) {
|
||||
img->planes[AOM_PLANE_U] = data + uv_x * bytes_per_sample * 2 +
|
||||
uv_y * img->stride[AOM_PLANE_U];
|
||||
img->planes[AOM_PLANE_V] = NULL;
|
||||
} else if (!(img->fmt & AOM_IMG_FMT_UV_FLIP)) {
|
||||
img->planes[AOM_PLANE_U] =
|
||||
data + uv_x * bytes_per_sample + uv_y * img->stride[AOM_PLANE_U];
|
||||
data += ((img->h >> img->y_chroma_shift) + 2 * uv_border_h) *
|
||||
img->stride[AOM_PLANE_U];
|
||||
img->planes[AOM_PLANE_V] =
|
||||
data + uv_x * bytes_per_sample + uv_y * img->stride[AOM_PLANE_V];
|
||||
} else {
|
||||
img->planes[AOM_PLANE_V] =
|
||||
data + uv_x * bytes_per_sample + uv_y * img->stride[AOM_PLANE_V];
|
||||
data += ((img->h >> img->y_chroma_shift) + 2 * uv_border_h) *
|
||||
img->stride[AOM_PLANE_V];
|
||||
img->planes[AOM_PLANE_U] =
|
||||
data + uv_x * bytes_per_sample + uv_y * img->stride[AOM_PLANE_U];
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void aom_img_flip(aom_image_t *img) {
|
||||
/* Note: In the calculation pointer adjustment calculation, we want the
|
||||
* rhs to be promoted to a signed type. Section 6.3.1.8 of the ISO C99
|
||||
* standard indicates that if the adjustment parameter is unsigned, the
|
||||
* stride parameter will be promoted to unsigned, causing errors when
|
||||
* the lhs is a larger type than the rhs.
|
||||
*/
|
||||
img->planes[AOM_PLANE_Y] += (signed)(img->d_h - 1) * img->stride[AOM_PLANE_Y];
|
||||
img->stride[AOM_PLANE_Y] = -img->stride[AOM_PLANE_Y];
|
||||
|
||||
img->planes[AOM_PLANE_U] += (signed)((img->d_h >> img->y_chroma_shift) - 1) *
|
||||
img->stride[AOM_PLANE_U];
|
||||
img->stride[AOM_PLANE_U] = -img->stride[AOM_PLANE_U];
|
||||
|
||||
img->planes[AOM_PLANE_V] += (signed)((img->d_h >> img->y_chroma_shift) - 1) *
|
||||
img->stride[AOM_PLANE_V];
|
||||
img->stride[AOM_PLANE_V] = -img->stride[AOM_PLANE_V];
|
||||
}
|
||||
|
||||
void aom_img_free(aom_image_t *img) {
|
||||
if (img) {
|
||||
aom_img_remove_metadata(img);
|
||||
if (img->img_data && img->img_data_owner) aom_free(img->img_data);
|
||||
|
||||
if (img->self_allocd) free(img);
|
||||
}
|
||||
}
|
||||
|
||||
int aom_img_plane_width(const aom_image_t *img, int plane) {
|
||||
if (plane > 0 && img->x_chroma_shift > 0)
|
||||
return (img->d_w + 1) >> img->x_chroma_shift;
|
||||
else
|
||||
return img->d_w;
|
||||
}
|
||||
|
||||
int aom_img_plane_height(const aom_image_t *img, int plane) {
|
||||
if (plane > 0 && img->y_chroma_shift > 0)
|
||||
return (img->d_h + 1) >> img->y_chroma_shift;
|
||||
else
|
||||
return img->d_h;
|
||||
}
|
||||
|
||||
aom_metadata_t *aom_img_metadata_alloc(
|
||||
uint32_t type, const uint8_t *data, size_t sz,
|
||||
aom_metadata_insert_flags_t insert_flag) {
|
||||
if (!data || sz == 0) return NULL;
|
||||
aom_metadata_t *metadata = (aom_metadata_t *)malloc(sizeof(aom_metadata_t));
|
||||
if (!metadata) return NULL;
|
||||
metadata->type = type;
|
||||
metadata->payload = (uint8_t *)malloc(sz);
|
||||
if (!metadata->payload) {
|
||||
free(metadata);
|
||||
return NULL;
|
||||
}
|
||||
memcpy(metadata->payload, data, sz);
|
||||
metadata->sz = sz;
|
||||
metadata->insert_flag = insert_flag;
|
||||
return metadata;
|
||||
}
|
||||
|
||||
void aom_img_metadata_free(aom_metadata_t *metadata) {
|
||||
if (metadata) {
|
||||
if (metadata->payload) free(metadata->payload);
|
||||
free(metadata);
|
||||
}
|
||||
}
|
||||
|
||||
aom_metadata_array_t *aom_img_metadata_array_alloc(size_t sz) {
|
||||
aom_metadata_array_t *arr =
|
||||
(aom_metadata_array_t *)calloc(1, sizeof(aom_metadata_array_t));
|
||||
if (!arr) return NULL;
|
||||
if (sz > 0) {
|
||||
arr->metadata_array =
|
||||
(aom_metadata_t **)calloc(sz, sizeof(aom_metadata_t *));
|
||||
if (!arr->metadata_array) {
|
||||
aom_img_metadata_array_free(arr);
|
||||
return NULL;
|
||||
}
|
||||
arr->sz = sz;
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
void aom_img_metadata_array_free(aom_metadata_array_t *arr) {
|
||||
if (arr) {
|
||||
if (arr->metadata_array) {
|
||||
for (size_t i = 0; i < arr->sz; i++) {
|
||||
aom_img_metadata_free(arr->metadata_array[i]);
|
||||
}
|
||||
free(arr->metadata_array);
|
||||
}
|
||||
free(arr);
|
||||
}
|
||||
}
|
||||
|
||||
int aom_img_add_metadata(aom_image_t *img, uint32_t type, const uint8_t *data,
|
||||
size_t sz, aom_metadata_insert_flags_t insert_flag) {
|
||||
if (!img) return -1;
|
||||
if (!img->metadata) {
|
||||
img->metadata = aom_img_metadata_array_alloc(0);
|
||||
if (!img->metadata) return -1;
|
||||
}
|
||||
aom_metadata_t *metadata =
|
||||
aom_img_metadata_alloc(type, data, sz, insert_flag);
|
||||
if (!metadata) return -1;
|
||||
aom_metadata_t **metadata_array =
|
||||
(aom_metadata_t **)realloc(img->metadata->metadata_array,
|
||||
(img->metadata->sz + 1) * sizeof(metadata));
|
||||
if (!metadata_array) {
|
||||
aom_img_metadata_free(metadata);
|
||||
return -1;
|
||||
}
|
||||
img->metadata->metadata_array = metadata_array;
|
||||
img->metadata->metadata_array[img->metadata->sz] = metadata;
|
||||
img->metadata->sz++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void aom_img_remove_metadata(aom_image_t *img) {
|
||||
if (img && img->metadata) {
|
||||
aom_img_metadata_array_free(img->metadata);
|
||||
img->metadata = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
const aom_metadata_t *aom_img_get_metadata(const aom_image_t *img,
|
||||
size_t index) {
|
||||
if (!img) return NULL;
|
||||
const aom_metadata_array_t *array = img->metadata;
|
||||
if (array && index < array->sz) {
|
||||
return array->metadata_array[index];
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
size_t aom_img_num_metadata(const aom_image_t *img) {
|
||||
if (!img || !img->metadata) return 0;
|
||||
return img->metadata->sz;
|
||||
}
|
||||
@@ -1,105 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
#include <assert.h>
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
|
||||
static const size_t kMaximumLeb128Size = 8;
|
||||
static const uint8_t kLeb128ByteMask = 0x7f; // Binary: 01111111
|
||||
|
||||
// Disallow values larger than 32-bits to ensure consistent behavior on 32 and
|
||||
// 64 bit targets: value is typically used to determine buffer allocation size
|
||||
// when decoded.
|
||||
static const uint64_t kMaximumLeb128Value = UINT32_MAX;
|
||||
|
||||
size_t aom_uleb_size_in_bytes(uint64_t value) {
|
||||
size_t size = 0;
|
||||
do {
|
||||
++size;
|
||||
} while ((value >>= 7) != 0);
|
||||
return size;
|
||||
}
|
||||
|
||||
int aom_uleb_decode(const uint8_t *buffer, size_t available, uint64_t *value,
|
||||
size_t *length) {
|
||||
if (buffer && value) {
|
||||
*value = 0;
|
||||
for (size_t i = 0; i < kMaximumLeb128Size && i < available; ++i) {
|
||||
const uint8_t decoded_byte = *(buffer + i) & kLeb128ByteMask;
|
||||
*value |= ((uint64_t)decoded_byte) << (i * 7);
|
||||
if ((*(buffer + i) >> 7) == 0) {
|
||||
if (length) {
|
||||
*length = i + 1;
|
||||
}
|
||||
|
||||
// Fail on values larger than 32-bits to ensure consistent behavior on
|
||||
// 32 and 64 bit targets: value is typically used to determine buffer
|
||||
// allocation size.
|
||||
if (*value > UINT32_MAX) return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If we get here, either the buffer/value pointers were invalid,
|
||||
// or we ran over the available space
|
||||
return -1;
|
||||
}
|
||||
|
||||
int aom_uleb_encode(uint64_t value, size_t available, uint8_t *coded_value,
|
||||
size_t *coded_size) {
|
||||
const size_t leb_size = aom_uleb_size_in_bytes(value);
|
||||
if (value > kMaximumLeb128Value || leb_size > kMaximumLeb128Size ||
|
||||
leb_size > available || !coded_value || !coded_size) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < leb_size; ++i) {
|
||||
uint8_t byte = value & 0x7f;
|
||||
value >>= 7;
|
||||
|
||||
if (value != 0) byte |= 0x80; // Signal that more bytes follow.
|
||||
|
||||
*(coded_value + i) = byte;
|
||||
}
|
||||
|
||||
*coded_size = leb_size;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int aom_uleb_encode_fixed_size(uint64_t value, size_t available,
|
||||
size_t pad_to_size, uint8_t *coded_value,
|
||||
size_t *coded_size) {
|
||||
if (value > kMaximumLeb128Value || !coded_value || !coded_size ||
|
||||
available < pad_to_size || pad_to_size > kMaximumLeb128Size) {
|
||||
return -1;
|
||||
}
|
||||
const uint64_t limit = 1ULL << (7 * pad_to_size);
|
||||
if (value >= limit) {
|
||||
// Can't encode 'value' within 'pad_to_size' bytes
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < pad_to_size; ++i) {
|
||||
uint8_t byte = value & 0x7f;
|
||||
value >>= 7;
|
||||
|
||||
if (i < pad_to_size - 1) byte |= 0x80; // Signal that more bytes follow.
|
||||
|
||||
*(coded_value + i) = byte;
|
||||
}
|
||||
|
||||
assert(value == 0);
|
||||
|
||||
*coded_size = pad_to_size;
|
||||
return 0;
|
||||
}
|
||||
@@ -1,261 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "config/aom_config.h"
|
||||
#include "config/aom_dsp_rtcd.h"
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom_dsp/aom_dsp_common.h"
|
||||
#include "aom_dsp/aom_filter.h"
|
||||
#include "aom_ports/mem.h"
|
||||
|
||||
static INLINE int horz_scalar_product(const uint8_t *a, const int16_t *b) {
|
||||
int sum = 0;
|
||||
for (int k = 0; k < SUBPEL_TAPS; ++k) sum += a[k] * b[k];
|
||||
return sum;
|
||||
}
|
||||
|
||||
static INLINE int vert_scalar_product(const uint8_t *a, ptrdiff_t a_stride,
|
||||
const int16_t *b) {
|
||||
int sum = 0;
|
||||
for (int k = 0; k < SUBPEL_TAPS; ++k) sum += a[k * a_stride] * b[k];
|
||||
return sum;
|
||||
}
|
||||
|
||||
static void convolve_horiz(const uint8_t *src, ptrdiff_t src_stride,
|
||||
uint8_t *dst, ptrdiff_t dst_stride,
|
||||
const InterpKernel *x_filters, int x0_q4,
|
||||
int x_step_q4, int w, int h) {
|
||||
src -= SUBPEL_TAPS / 2 - 1;
|
||||
for (int y = 0; y < h; ++y) {
|
||||
int x_q4 = x0_q4;
|
||||
for (int x = 0; x < w; ++x) {
|
||||
const uint8_t *const src_x = &src[x_q4 >> SUBPEL_BITS];
|
||||
const int16_t *const x_filter = x_filters[x_q4 & SUBPEL_MASK];
|
||||
const int sum = horz_scalar_product(src_x, x_filter);
|
||||
dst[x] = clip_pixel(ROUND_POWER_OF_TWO(sum, FILTER_BITS));
|
||||
x_q4 += x_step_q4;
|
||||
}
|
||||
src += src_stride;
|
||||
dst += dst_stride;
|
||||
}
|
||||
}
|
||||
|
||||
static void convolve_vert(const uint8_t *src, ptrdiff_t src_stride,
|
||||
uint8_t *dst, ptrdiff_t dst_stride,
|
||||
const InterpKernel *y_filters, int y0_q4,
|
||||
int y_step_q4, int w, int h) {
|
||||
src -= src_stride * (SUBPEL_TAPS / 2 - 1);
|
||||
|
||||
for (int x = 0; x < w; ++x) {
|
||||
int y_q4 = y0_q4;
|
||||
for (int y = 0; y < h; ++y) {
|
||||
const unsigned char *src_y = &src[(y_q4 >> SUBPEL_BITS) * src_stride];
|
||||
const int16_t *const y_filter = y_filters[y_q4 & SUBPEL_MASK];
|
||||
const int sum = vert_scalar_product(src_y, src_stride, y_filter);
|
||||
dst[y * dst_stride] = clip_pixel(ROUND_POWER_OF_TWO(sum, FILTER_BITS));
|
||||
y_q4 += y_step_q4;
|
||||
}
|
||||
++src;
|
||||
++dst;
|
||||
}
|
||||
}
|
||||
|
||||
static const InterpKernel *get_filter_base(const int16_t *filter) {
|
||||
// NOTE: This assumes that the filter table is 256-byte aligned.
|
||||
return (const InterpKernel *)(((intptr_t)filter) & ~((intptr_t)0xFF));
|
||||
}
|
||||
|
||||
static int get_filter_offset(const int16_t *f, const InterpKernel *base) {
|
||||
return (int)((const InterpKernel *)(intptr_t)f - base);
|
||||
}
|
||||
|
||||
void aom_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride,
|
||||
uint8_t *dst, ptrdiff_t dst_stride,
|
||||
const int16_t *filter_x, int x_step_q4,
|
||||
const int16_t *filter_y, int y_step_q4, int w,
|
||||
int h) {
|
||||
const InterpKernel *const filters_x = get_filter_base(filter_x);
|
||||
const int x0_q4 = get_filter_offset(filter_x, filters_x);
|
||||
|
||||
(void)filter_y;
|
||||
(void)y_step_q4;
|
||||
|
||||
convolve_horiz(src, src_stride, dst, dst_stride, filters_x, x0_q4, x_step_q4,
|
||||
w, h);
|
||||
}
|
||||
|
||||
void aom_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride,
|
||||
uint8_t *dst, ptrdiff_t dst_stride,
|
||||
const int16_t *filter_x, int x_step_q4,
|
||||
const int16_t *filter_y, int y_step_q4, int w,
|
||||
int h) {
|
||||
const InterpKernel *const filters_y = get_filter_base(filter_y);
|
||||
const int y0_q4 = get_filter_offset(filter_y, filters_y);
|
||||
|
||||
(void)filter_x;
|
||||
(void)x_step_q4;
|
||||
|
||||
convolve_vert(src, src_stride, dst, dst_stride, filters_y, y0_q4, y_step_q4,
|
||||
w, h);
|
||||
}
|
||||
|
||||
void aom_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
|
||||
ptrdiff_t dst_stride, const InterpKernel *filter,
|
||||
int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w,
|
||||
int h) {
|
||||
// Note: Fixed size intermediate buffer, temp, places limits on parameters.
|
||||
// 2d filtering proceeds in 2 steps:
|
||||
// (1) Interpolate horizontally into an intermediate buffer, temp.
|
||||
// (2) Interpolate temp vertically to derive the sub-pixel result.
|
||||
// Deriving the maximum number of rows in the temp buffer (135):
|
||||
// --Smallest scaling factor is x1/2 ==> y_step_q4 = 32 (Normative).
|
||||
// --Largest block size is 64x64 pixels.
|
||||
// --64 rows in the downscaled frame span a distance of (64 - 1) * 32 in the
|
||||
// original frame (in 1/16th pixel units).
|
||||
// --Must round-up because block may be located at sub-pixel position.
|
||||
// --Require an additional SUBPEL_TAPS rows for the 8-tap filter tails.
|
||||
// --((64 - 1) * 32 + 15) >> 4 + 8 = 135.
|
||||
// When calling in frame scaling function, the smallest scaling factor is x1/4
|
||||
// ==> y_step_q4 = 64. Since w and h are at most 16, the temp buffer is still
|
||||
// big enough.
|
||||
uint8_t temp[64 * 135];
|
||||
const int intermediate_height =
|
||||
(((h - 1) * y_step_q4 + y0_q4) >> SUBPEL_BITS) + SUBPEL_TAPS;
|
||||
|
||||
assert(w <= 64);
|
||||
assert(h <= 64);
|
||||
assert(y_step_q4 <= 32 || (y_step_q4 <= 64 && h <= 32));
|
||||
assert(x_step_q4 <= 64);
|
||||
|
||||
convolve_horiz(src - src_stride * (SUBPEL_TAPS / 2 - 1), src_stride, temp, 64,
|
||||
filter, x0_q4, x_step_q4, w, intermediate_height);
|
||||
convolve_vert(temp + 64 * (SUBPEL_TAPS / 2 - 1), 64, dst, dst_stride, filter,
|
||||
y0_q4, y_step_q4, w, h);
|
||||
}
|
||||
|
||||
void aom_scaled_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
|
||||
ptrdiff_t dst_stride, const InterpKernel *filter,
|
||||
int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w,
|
||||
int h) {
|
||||
aom_convolve8_c(src, src_stride, dst, dst_stride, filter, x0_q4, x_step_q4,
|
||||
y0_q4, y_step_q4, w, h);
|
||||
}
|
||||
|
||||
void aom_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
|
||||
ptrdiff_t dst_stride, int w, int h) {
|
||||
for (int r = h; r > 0; --r) {
|
||||
memmove(dst, src, w);
|
||||
src += src_stride;
|
||||
dst += dst_stride;
|
||||
}
|
||||
}
|
||||
|
||||
#if CONFIG_AV1_HIGHBITDEPTH
|
||||
static INLINE int highbd_vert_scalar_product(const uint16_t *a,
|
||||
ptrdiff_t a_stride,
|
||||
const int16_t *b) {
|
||||
int sum = 0;
|
||||
for (int k = 0; k < SUBPEL_TAPS; ++k) sum += a[k * a_stride] * b[k];
|
||||
return sum;
|
||||
}
|
||||
|
||||
static INLINE int highbd_horz_scalar_product(const uint16_t *a,
|
||||
const int16_t *b) {
|
||||
int sum = 0;
|
||||
for (int k = 0; k < SUBPEL_TAPS; ++k) sum += a[k] * b[k];
|
||||
return sum;
|
||||
}
|
||||
|
||||
static void highbd_convolve_horiz(const uint8_t *src8, ptrdiff_t src_stride,
|
||||
uint8_t *dst8, ptrdiff_t dst_stride,
|
||||
const InterpKernel *x_filters, int x0_q4,
|
||||
int x_step_q4, int w, int h, int bd) {
|
||||
uint16_t *src = CONVERT_TO_SHORTPTR(src8);
|
||||
uint16_t *dst = CONVERT_TO_SHORTPTR(dst8);
|
||||
src -= SUBPEL_TAPS / 2 - 1;
|
||||
for (int y = 0; y < h; ++y) {
|
||||
int x_q4 = x0_q4;
|
||||
for (int x = 0; x < w; ++x) {
|
||||
const uint16_t *const src_x = &src[x_q4 >> SUBPEL_BITS];
|
||||
const int16_t *const x_filter = x_filters[x_q4 & SUBPEL_MASK];
|
||||
const int sum = highbd_horz_scalar_product(src_x, x_filter);
|
||||
dst[x] = clip_pixel_highbd(ROUND_POWER_OF_TWO(sum, FILTER_BITS), bd);
|
||||
x_q4 += x_step_q4;
|
||||
}
|
||||
src += src_stride;
|
||||
dst += dst_stride;
|
||||
}
|
||||
}
|
||||
|
||||
static void highbd_convolve_vert(const uint8_t *src8, ptrdiff_t src_stride,
|
||||
uint8_t *dst8, ptrdiff_t dst_stride,
|
||||
const InterpKernel *y_filters, int y0_q4,
|
||||
int y_step_q4, int w, int h, int bd) {
|
||||
uint16_t *src = CONVERT_TO_SHORTPTR(src8);
|
||||
uint16_t *dst = CONVERT_TO_SHORTPTR(dst8);
|
||||
src -= src_stride * (SUBPEL_TAPS / 2 - 1);
|
||||
for (int x = 0; x < w; ++x) {
|
||||
int y_q4 = y0_q4;
|
||||
for (int y = 0; y < h; ++y) {
|
||||
const uint16_t *src_y = &src[(y_q4 >> SUBPEL_BITS) * src_stride];
|
||||
const int16_t *const y_filter = y_filters[y_q4 & SUBPEL_MASK];
|
||||
const int sum = highbd_vert_scalar_product(src_y, src_stride, y_filter);
|
||||
dst[y * dst_stride] =
|
||||
clip_pixel_highbd(ROUND_POWER_OF_TWO(sum, FILTER_BITS), bd);
|
||||
y_q4 += y_step_q4;
|
||||
}
|
||||
++src;
|
||||
++dst;
|
||||
}
|
||||
}
|
||||
|
||||
void aom_highbd_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride,
|
||||
uint8_t *dst, ptrdiff_t dst_stride,
|
||||
const int16_t *filter_x, int x_step_q4,
|
||||
const int16_t *filter_y, int y_step_q4, int w,
|
||||
int h, int bd) {
|
||||
const InterpKernel *const filters_x = get_filter_base(filter_x);
|
||||
const int x0_q4 = get_filter_offset(filter_x, filters_x);
|
||||
(void)filter_y;
|
||||
(void)y_step_q4;
|
||||
|
||||
highbd_convolve_horiz(src, src_stride, dst, dst_stride, filters_x, x0_q4,
|
||||
x_step_q4, w, h, bd);
|
||||
}
|
||||
|
||||
void aom_highbd_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride,
|
||||
uint8_t *dst, ptrdiff_t dst_stride,
|
||||
const int16_t *filter_x, int x_step_q4,
|
||||
const int16_t *filter_y, int y_step_q4, int w,
|
||||
int h, int bd) {
|
||||
const InterpKernel *const filters_y = get_filter_base(filter_y);
|
||||
const int y0_q4 = get_filter_offset(filter_y, filters_y);
|
||||
(void)filter_x;
|
||||
(void)x_step_q4;
|
||||
|
||||
highbd_convolve_vert(src, src_stride, dst, dst_stride, filters_y, y0_q4,
|
||||
y_step_q4, w, h, bd);
|
||||
}
|
||||
|
||||
void aom_highbd_convolve_copy_c(const uint16_t *src, ptrdiff_t src_stride,
|
||||
uint16_t *dst, ptrdiff_t dst_stride, int w,
|
||||
int h) {
|
||||
for (int y = 0; y < h; ++y) {
|
||||
memmove(dst, src, w * sizeof(src[0]));
|
||||
src += src_stride;
|
||||
dst += dst_stride;
|
||||
}
|
||||
}
|
||||
#endif // CONFIG_AV1_HIGHBITDEPTH
|
||||
@@ -1,446 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2017, Alliance for Open Media. All rights reserved
|
||||
#
|
||||
# This source code is subject to the terms of the BSD 2 Clause License and the
|
||||
# Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License was
|
||||
# not distributed with this source code in the LICENSE file, you can obtain it
|
||||
# at www.aomedia.org/license/software. If the Alliance for Open Media Patent
|
||||
# License 1.0 was not distributed with this source code in the PATENTS file, you
|
||||
# can obtain it at www.aomedia.org/license/patent.
|
||||
#
|
||||
if(AOM_AOM_DSP_AOM_DSP_CMAKE_)
|
||||
return()
|
||||
endif() # AOM_AOM_DSP_AOM_DSP_CMAKE_
|
||||
set(AOM_AOM_DSP_AOM_DSP_CMAKE_ 1)
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_SOURCES
|
||||
"${AOM_ROOT}/aom_dsp/aom_convolve.c"
|
||||
"${AOM_ROOT}/aom_dsp/aom_dsp_common.h"
|
||||
"${AOM_ROOT}/aom_dsp/aom_filter.h"
|
||||
"${AOM_ROOT}/aom_dsp/aom_simd.h"
|
||||
"${AOM_ROOT}/aom_dsp/aom_simd_inline.h"
|
||||
"${AOM_ROOT}/aom_dsp/bitreader_buffer.c"
|
||||
"${AOM_ROOT}/aom_dsp/bitreader_buffer.h"
|
||||
"${AOM_ROOT}/aom_dsp/bitwriter_buffer.c"
|
||||
"${AOM_ROOT}/aom_dsp/bitwriter_buffer.h"
|
||||
"${AOM_ROOT}/aom_dsp/blend.h"
|
||||
"${AOM_ROOT}/aom_dsp/blend_a64_hmask.c"
|
||||
"${AOM_ROOT}/aom_dsp/blend_a64_mask.c"
|
||||
"${AOM_ROOT}/aom_dsp/blend_a64_vmask.c"
|
||||
"${AOM_ROOT}/aom_dsp/entcode.c"
|
||||
"${AOM_ROOT}/aom_dsp/entcode.h"
|
||||
"${AOM_ROOT}/aom_dsp/fft.c"
|
||||
"${AOM_ROOT}/aom_dsp/fft_common.h"
|
||||
"${AOM_ROOT}/aom_dsp/grain_params.h"
|
||||
"${AOM_ROOT}/aom_dsp/intrapred.c"
|
||||
"${AOM_ROOT}/aom_dsp/intrapred_common.h"
|
||||
"${AOM_ROOT}/aom_dsp/loopfilter.c"
|
||||
"${AOM_ROOT}/aom_dsp/odintrin.c"
|
||||
"${AOM_ROOT}/aom_dsp/odintrin.h"
|
||||
"${AOM_ROOT}/aom_dsp/prob.h"
|
||||
"${AOM_ROOT}/aom_dsp/recenter.h"
|
||||
"${AOM_ROOT}/aom_dsp/simd/v128_intrinsics.h"
|
||||
"${AOM_ROOT}/aom_dsp/simd/v128_intrinsics_c.h"
|
||||
"${AOM_ROOT}/aom_dsp/simd/v256_intrinsics.h"
|
||||
"${AOM_ROOT}/aom_dsp/simd/v256_intrinsics_c.h"
|
||||
"${AOM_ROOT}/aom_dsp/simd/v64_intrinsics.h"
|
||||
"${AOM_ROOT}/aom_dsp/simd/v64_intrinsics_c.h"
|
||||
"${AOM_ROOT}/aom_dsp/subtract.c"
|
||||
"${AOM_ROOT}/aom_dsp/txfm_common.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/convolve_common_intrin.h")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_ASM_SSE2
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_high_subpixel_8t_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_high_subpixel_bilinear_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_bilinear_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_intrapred_asm_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/intrapred_asm_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/inv_wht_sse2.asm")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_INTRIN_SSE2
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_convolve_copy_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_intrin_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_asm_stubs.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/convolve.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/convolve_sse2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/fft_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_intrapred_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/intrapred_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/intrapred_x86.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/loopfilter_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/lpf_common_sse2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/mem_sse2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/transpose_sse2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/txfm_common_sse2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/sum_squares_sse2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/bitdepth_conversion_sse2.h")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_ASM_SSSE3
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_ssse3.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_bilinear_ssse3.asm")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_INTRIN_SSSE3
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_intrin_ssse3.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/convolve_ssse3.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/intrapred_ssse3.c")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_INTRIN_SSE4_1
|
||||
"${AOM_ROOT}/aom_dsp/x86/blend_mask_sse4.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/blend_a64_hmask_sse4.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/blend_a64_mask_sse4.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/blend_a64_vmask_sse4.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/intrapred_sse4.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/intrapred_utils.h")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_INTRIN_AVX2
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_convolve_copy_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_intrin_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/common_avx2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/txfm_common_avx2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/convolve_avx2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/fft_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/intrapred_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/loopfilter_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/blend_a64_mask_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/bitdepth_conversion_avx2.h")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_INTRIN_NEON
|
||||
"${AOM_ROOT}/aom_dsp/arm/aom_convolve_copy_neon.c"
|
||||
"${AOM_ROOT}/aom_dsp/arm/fwd_txfm_neon.c"
|
||||
"${AOM_ROOT}/aom_dsp/arm/loopfilter_neon.c"
|
||||
"${AOM_ROOT}/aom_dsp/arm/highbd_intrapred_neon.c"
|
||||
"${AOM_ROOT}/aom_dsp/arm/intrapred_neon.c"
|
||||
"${AOM_ROOT}/aom_dsp/arm/subtract_neon.c"
|
||||
"${AOM_ROOT}/aom_dsp/arm/blend_a64_mask_neon.c")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_INTRIN_DSPR2
|
||||
"${AOM_ROOT}/aom_dsp/mips/aom_convolve_copy_dspr2.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/common_dspr2.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/common_dspr2.h"
|
||||
"${AOM_ROOT}/aom_dsp/mips/convolve2_dspr2.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/convolve2_horiz_dspr2.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/convolve2_vert_dspr2.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/convolve8_horiz_dspr2.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/convolve8_vert_dspr2.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/convolve_common_dspr2.h"
|
||||
"${AOM_ROOT}/aom_dsp/mips/intrapred16_dspr2.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/intrapred4_dspr2.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/intrapred8_dspr2.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/inv_txfm_dspr2.h")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_INTRIN_MSA
|
||||
"${AOM_ROOT}/aom_dsp/mips/aom_convolve8_horiz_msa.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/aom_convolve8_vert_msa.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/aom_convolve_copy_msa.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/aom_convolve_msa.h"
|
||||
"${AOM_ROOT}/aom_dsp/mips/intrapred_msa.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/macros_msa.h")
|
||||
|
||||
if(CONFIG_AV1_HIGHBITDEPTH)
|
||||
list(APPEND AOM_DSP_COMMON_INTRIN_SSE2
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_convolve_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_loopfilter_sse2.c")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_INTRIN_SSSE3
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_convolve_ssse3.c")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_INTRIN_AVX2
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_convolve_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_loopfilter_avx2.c")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_INTRIN_NEON
|
||||
"${AOM_ROOT}/aom_dsp/arm/highbd_loopfilter_neon.c")
|
||||
endif()
|
||||
|
||||
if(CONFIG_AV1_DECODER)
|
||||
list(APPEND AOM_DSP_DECODER_SOURCES
|
||||
"${AOM_ROOT}/aom_dsp/binary_codes_reader.c"
|
||||
"${AOM_ROOT}/aom_dsp/binary_codes_reader.h"
|
||||
"${AOM_ROOT}/aom_dsp/bitreader.c"
|
||||
"${AOM_ROOT}/aom_dsp/bitreader.h" "${AOM_ROOT}/aom_dsp/entdec.c"
|
||||
"${AOM_ROOT}/aom_dsp/entdec.h")
|
||||
endif()
|
||||
|
||||
if(CONFIG_AV1_ENCODER)
|
||||
list(APPEND AOM_DSP_ENCODER_SOURCES
|
||||
"${AOM_ROOT}/aom_dsp/avg.c"
|
||||
"${AOM_ROOT}/aom_dsp/binary_codes_writer.c"
|
||||
"${AOM_ROOT}/aom_dsp/binary_codes_writer.h"
|
||||
"${AOM_ROOT}/aom_dsp/bitwriter.c"
|
||||
"${AOM_ROOT}/aom_dsp/bitwriter.h"
|
||||
"${AOM_ROOT}/aom_dsp/blk_sse_sum.c"
|
||||
"${AOM_ROOT}/aom_dsp/entenc.c"
|
||||
"${AOM_ROOT}/aom_dsp/entenc.h"
|
||||
"${AOM_ROOT}/aom_dsp/fwd_txfm.c"
|
||||
"${AOM_ROOT}/aom_dsp/grain_table.c"
|
||||
"${AOM_ROOT}/aom_dsp/grain_table.h"
|
||||
"${AOM_ROOT}/aom_dsp/noise_model.c"
|
||||
"${AOM_ROOT}/aom_dsp/noise_model.h"
|
||||
"${AOM_ROOT}/aom_dsp/noise_util.c"
|
||||
"${AOM_ROOT}/aom_dsp/noise_util.h"
|
||||
"${AOM_ROOT}/aom_dsp/psnr.c"
|
||||
"${AOM_ROOT}/aom_dsp/psnr.h"
|
||||
"${AOM_ROOT}/aom_dsp/quantize.c"
|
||||
"${AOM_ROOT}/aom_dsp/quantize.h"
|
||||
"${AOM_ROOT}/aom_dsp/sad.c"
|
||||
"${AOM_ROOT}/aom_dsp/sad_av1.c"
|
||||
"${AOM_ROOT}/aom_dsp/sse.c"
|
||||
"${AOM_ROOT}/aom_dsp/ssim.c"
|
||||
"${AOM_ROOT}/aom_dsp/ssim.h"
|
||||
"${AOM_ROOT}/aom_dsp/sum_squares.c"
|
||||
"${AOM_ROOT}/aom_dsp/variance.c"
|
||||
"${AOM_ROOT}/aom_dsp/variance.h")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_ASM_SSE2 "${AOM_ROOT}/aom_dsp/x86/sad4d_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/sad_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/subpel_variance_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/subtract_sse2.asm")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_ASM_SSE2_X86_64
|
||||
"${AOM_ROOT}/aom_dsp/x86/ssim_sse2_x86_64.asm")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_INTRIN_SSE2
|
||||
"${AOM_ROOT}/aom_dsp/x86/avg_intrin_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/fwd_txfm_impl_sse2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/fwd_txfm_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/fwd_txfm_sse2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/quantize_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/adaptive_quantize_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/quantize_x86.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/blk_sse_sum_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/sum_squares_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/variance_sse2.c")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_ASM_SSSE3_X86_64
|
||||
"${AOM_ROOT}/aom_dsp/x86/fwd_txfm_ssse3_x86_64.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/quantize_ssse3_x86_64.asm")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_INTRIN_AVX2
|
||||
"${AOM_ROOT}/aom_dsp/x86/avg_intrin_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/subtract_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/adaptive_quantize_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_adaptive_quantize_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/sad4d_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/sad_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_sad_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/sad_impl_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/variance_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/sse_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/variance_impl_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/obmc_sad_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/obmc_variance_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/blk_sse_sum_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/sum_squares_avx2.c")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_INTRIN_AVX
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_quantize_avx.c")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_INTRIN_SSSE3
|
||||
"${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_ssse3.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_ssse3.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/masked_sad4d_ssse3.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/masked_variance_intrin_ssse3.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/masked_variance_intrin_ssse3.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/quantize_ssse3.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/variance_impl_ssse3.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/jnt_variance_ssse3.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/jnt_sad_ssse3.c")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_INTRIN_SSE4_1 "${AOM_ROOT}/aom_dsp/x86/sse_sse4.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/obmc_sad_sse4.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/obmc_variance_sse4.c")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_INTRIN_NEON "${AOM_ROOT}/aom_dsp/arm/sad4d_neon.c"
|
||||
"${AOM_ROOT}/aom_dsp/arm/sad_neon.c"
|
||||
"${AOM_ROOT}/aom_dsp/arm/subpel_variance_neon.c"
|
||||
"${AOM_ROOT}/aom_dsp/arm/variance_neon.c"
|
||||
"${AOM_ROOT}/aom_dsp/arm/hadamard_neon.c"
|
||||
"${AOM_ROOT}/aom_dsp/arm/avg_neon.c"
|
||||
"${AOM_ROOT}/aom_dsp/arm/sse_neon.c"
|
||||
"${AOM_ROOT}/aom_dsp/arm/sum_squares_neon.c")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_INTRIN_MSA "${AOM_ROOT}/aom_dsp/mips/sad_msa.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/subtract_msa.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/variance_msa.c"
|
||||
"${AOM_ROOT}/aom_dsp/mips/sub_pixel_variance_msa.c")
|
||||
|
||||
if(CONFIG_AV1_HIGHBITDEPTH)
|
||||
list(APPEND AOM_DSP_ENCODER_ASM_SSE2
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_sad4d_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_sad_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_subpel_variance_impl_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_variance_impl_sse2.asm")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_INTRIN_SSE2
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_adaptive_quantize_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_subtract_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_variance_sse2.c")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_INTRIN_AVX2
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_variance_avx2.c")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_INTRIN_SSE4_1
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_variance_sse4.c")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_INTRIN_NEON
|
||||
"${AOM_ROOT}/aom_dsp/arm/highbd_quantize_neon.c"
|
||||
"${AOM_ROOT}/aom_dsp/arm/highbd_variance_neon.c")
|
||||
endif()
|
||||
|
||||
if(CONFIG_INTERNAL_STATS)
|
||||
list(APPEND AOM_DSP_ENCODER_SOURCES "${AOM_ROOT}/aom_dsp/fastssim.c"
|
||||
"${AOM_ROOT}/aom_dsp/psnrhvs.c")
|
||||
endif()
|
||||
|
||||
if(CONFIG_TUNE_VMAF)
|
||||
list(APPEND AOM_DSP_ENCODER_SOURCES "${AOM_ROOT}/aom_dsp/vmaf.c"
|
||||
"${AOM_ROOT}/aom_dsp/vmaf.h")
|
||||
endif()
|
||||
|
||||
if(CONFIG_TUNE_BUTTERAUGLI)
|
||||
list(APPEND AOM_DSP_ENCODER_SOURCES "${AOM_ROOT}/aom_dsp/butteraugli.c"
|
||||
"${AOM_ROOT}/aom_dsp/butteraugli.h")
|
||||
endif()
|
||||
|
||||
if(CONFIG_REALTIME_ONLY)
|
||||
list(REMOVE_ITEM AOM_DSP_ENCODER_INTRIN_AVX2
|
||||
"${AOM_ROOT}/aom_dsp/x86/obmc_sad_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/obmc_variance_avx2.c")
|
||||
|
||||
list(REMOVE_ITEM AOM_DSP_ENCODER_INTRIN_SSE4_1
|
||||
"${AOM_ROOT}/aom_dsp/x86/obmc_sad_sse4.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/obmc_variance_sse4.c")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Creates aom_dsp build targets. Must not be called until after libaom target
|
||||
# has been created.
|
||||
function(setup_aom_dsp_targets)
|
||||
add_library(aom_dsp_common OBJECT ${AOM_DSP_COMMON_SOURCES})
|
||||
list(APPEND AOM_LIB_TARGETS aom_dsp_common)
|
||||
create_dummy_source_file("aom_av1" "c" "dummy_source_file")
|
||||
add_library(aom_dsp OBJECT "${dummy_source_file}")
|
||||
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_common>)
|
||||
if(BUILD_SHARED_LIBS)
|
||||
target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp_common>)
|
||||
endif()
|
||||
list(APPEND AOM_LIB_TARGETS aom_dsp)
|
||||
|
||||
# Not all generators support libraries consisting only of object files. Add a
|
||||
# dummy source file to the aom_dsp target.
|
||||
add_dummy_source_file_to_target("aom_dsp" "c")
|
||||
|
||||
if(CONFIG_AV1_DECODER)
|
||||
add_library(aom_dsp_decoder OBJECT ${AOM_DSP_DECODER_SOURCES})
|
||||
list(APPEND AOM_LIB_TARGETS aom_dsp_decoder)
|
||||
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_decoder>)
|
||||
if(BUILD_SHARED_LIBS)
|
||||
target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp_decoder>)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CONFIG_AV1_ENCODER)
|
||||
add_library(aom_dsp_encoder OBJECT ${AOM_DSP_ENCODER_SOURCES})
|
||||
list(APPEND AOM_LIB_TARGETS aom_dsp_encoder)
|
||||
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_encoder>)
|
||||
if(BUILD_SHARED_LIBS)
|
||||
target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp_encoder>)
|
||||
endif()
|
||||
if(CONFIG_TUNE_VMAF)
|
||||
target_include_directories(aom_dsp_encoder PRIVATE ${VMAF_INCLUDE_DIRS})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(HAVE_SSE2)
|
||||
add_asm_library("aom_dsp_common_sse2" "AOM_DSP_COMMON_ASM_SSE2")
|
||||
add_intrinsics_object_library("-msse2" "sse2" "aom_dsp_common"
|
||||
"AOM_DSP_COMMON_INTRIN_SSE2")
|
||||
|
||||
if(CONFIG_AV1_ENCODER)
|
||||
if("${AOM_TARGET_CPU}" STREQUAL "x86_64")
|
||||
list(APPEND AOM_DSP_ENCODER_ASM_SSE2 ${AOM_DSP_ENCODER_ASM_SSE2_X86_64})
|
||||
endif()
|
||||
add_asm_library("aom_dsp_encoder_sse2" "AOM_DSP_ENCODER_ASM_SSE2")
|
||||
add_intrinsics_object_library("-msse2" "sse2" "aom_dsp_encoder"
|
||||
"AOM_DSP_ENCODER_INTRIN_SSE2")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(HAVE_SSSE3)
|
||||
add_asm_library("aom_dsp_common_ssse3" "AOM_DSP_COMMON_ASM_SSSE3")
|
||||
add_intrinsics_object_library("-mssse3" "ssse3" "aom_dsp_common"
|
||||
"AOM_DSP_COMMON_INTRIN_SSSE3")
|
||||
|
||||
if(CONFIG_AV1_ENCODER)
|
||||
if("${AOM_TARGET_CPU}" STREQUAL "x86_64")
|
||||
list(APPEND AOM_DSP_ENCODER_ASM_SSSE3
|
||||
${AOM_DSP_ENCODER_ASM_SSSE3_X86_64})
|
||||
endif()
|
||||
add_asm_library("aom_dsp_encoder_ssse3" "AOM_DSP_ENCODER_ASM_SSSE3")
|
||||
add_intrinsics_object_library("-mssse3" "ssse3" "aom_dsp_encoder"
|
||||
"AOM_DSP_ENCODER_INTRIN_SSSE3")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(HAVE_SSE4_1)
|
||||
add_intrinsics_object_library("-msse4.1" "sse4_1" "aom_dsp_common"
|
||||
"AOM_DSP_COMMON_INTRIN_SSE4_1")
|
||||
if(CONFIG_AV1_ENCODER)
|
||||
add_intrinsics_object_library("-msse4.1" "sse4_1" "aom_dsp_encoder"
|
||||
"AOM_DSP_ENCODER_INTRIN_SSE4_1")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(HAVE_AVX)
|
||||
if(CONFIG_AV1_ENCODER)
|
||||
add_intrinsics_object_library("-mavx" "avx" "aom_dsp_encoder"
|
||||
"AOM_DSP_ENCODER_INTRIN_AVX")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(HAVE_AVX2)
|
||||
add_intrinsics_object_library("-mavx2" "avx2" "aom_dsp_common"
|
||||
"AOM_DSP_COMMON_INTRIN_AVX2")
|
||||
if(CONFIG_AV1_ENCODER)
|
||||
add_intrinsics_object_library("-mavx2" "avx2" "aom_dsp_encoder"
|
||||
"AOM_DSP_ENCODER_INTRIN_AVX2")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(HAVE_NEON)
|
||||
add_intrinsics_object_library("${AOM_NEON_INTRIN_FLAG}" "neon"
|
||||
"aom_dsp_common" "AOM_DSP_COMMON_INTRIN_NEON")
|
||||
if(CONFIG_AV1_ENCODER)
|
||||
add_intrinsics_object_library("${AOM_NEON_INTRIN_FLAG}" "neon"
|
||||
"aom_dsp_encoder"
|
||||
"AOM_DSP_ENCODER_INTRIN_NEON")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(HAVE_DSPR2)
|
||||
add_intrinsics_object_library("" "dspr2" "aom_dsp_common"
|
||||
"AOM_DSP_COMMON_INTRIN_DSPR2")
|
||||
endif()
|
||||
|
||||
if(HAVE_MSA)
|
||||
add_intrinsics_object_library("" "msa" "aom_dsp_common"
|
||||
"AOM_DSP_COMMON_INTRIN_MSA")
|
||||
if(CONFIG_AV1_ENCODER)
|
||||
add_intrinsics_object_library("" "msa" "aom_dsp_encoder"
|
||||
"AOM_DSP_ENCODER_INTRIN_MSA")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp>)
|
||||
if(BUILD_SHARED_LIBS)
|
||||
target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp>)
|
||||
endif()
|
||||
|
||||
# Pass the new lib targets up to the parent scope instance of
|
||||
# $AOM_LIB_TARGETS.
|
||||
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} PARENT_SCOPE)
|
||||
endfunction()
|
||||
@@ -1,103 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
|
||||
*
|
||||
* This source code is subject to the terms of the BSD 2 Clause License and
|
||||
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
||||
* was not distributed with this source code in the LICENSE file, you can
|
||||
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
||||
* Media Patent License 1.0 was not distributed with this source code in the
|
||||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
|
||||
#ifndef AOM_AOM_DSP_AOM_DSP_COMMON_H_
|
||||
#define AOM_AOM_DSP_AOM_DSP_COMMON_H_
|
||||
|
||||
#include "config/aom_config.h"
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom_ports/mem.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define PI 3.141592653589793238462643383279502884
|
||||
|
||||
#ifndef MAX_SB_SIZE
|
||||
#define MAX_SB_SIZE 128
|
||||
#endif // ndef MAX_SB_SIZE
|
||||
|
||||
#define AOMMIN(x, y) (((x) < (y)) ? (x) : (y))
|
||||
#define AOMMAX(x, y) (((x) > (y)) ? (x) : (y))
|
||||
#define AOMSIGN(x) ((x) < 0 ? -1 : 0)
|
||||
|
||||
#define NELEMENTS(x) (int)(sizeof(x) / sizeof(x[0]))
|
||||
|
||||
#define IMPLIES(a, b) (!(a) || (b)) // Logical 'a implies b' (or 'a -> b')
|
||||
|
||||
#define IS_POWER_OF_TWO(x) (((x) & ((x)-1)) == 0)
|
||||
|
||||
/* Left shifting a negative value became undefined behavior in C99 (downgraded
|
||||
from merely implementation-defined in C89). This should still compile to the
|
||||
correct thing on any two's-complement machine, but avoid ubsan warnings.*/
|
||||
#define AOM_SIGNED_SHL(x, shift) ((x) * (((x)*0 + 1) << (shift)))
|
||||
|
||||
// These can be used to give a hint about branch outcomes.
|
||||
// This can have an effect, even if your target processor has a
|
||||
// good branch predictor, as these hints can affect basic block
|
||||
// ordering by the compiler.
|
||||
#ifdef __GNUC__
|
||||
#define LIKELY(v) __builtin_expect(v, 1)
|
||||
#define UNLIKELY(v) __builtin_expect(v, 0)
|
||||
#else
|
||||
#define LIKELY(v) (v)
|
||||
#define UNLIKELY(v) (v)
|
||||
#endif
|
||||
|
||||
typedef uint8_t qm_val_t;
|
||||
#define AOM_QM_BITS 5
|
||||
|
||||
// Note:
|
||||
// tran_low_t is the datatype used for final transform coefficients.
|
||||
// tran_high_t is the datatype used for intermediate transform stages.
|
||||
typedef int64_t tran_high_t;
|
||||
typedef int32_t tran_low_t;
|
||||
|
||||
static INLINE uint8_t clip_pixel(int val) {
|
||||
return (val > 255) ? 255 : (val < 0) ? 0 : val;
|
||||
}
|
||||
|
||||
static INLINE int clamp(int value, int low, int high) {
|
||||
return value < low ? low : (value > high ? high : value);
|
||||
}
|
||||
|
||||
static INLINE int64_t clamp64(int64_t value, int64_t low, int64_t high) {
|
||||
return value < low ? low : (value > high ? high : value);
|
||||
}
|
||||
|
||||
static INLINE double fclamp(double value, double low, double high) {
|
||||
return value < low ? low : (value > high ? high : value);
|
||||
}
|
||||
|
||||
static INLINE uint16_t clip_pixel_highbd(int val, int bd) {
|
||||
switch (bd) {
|
||||
case 8:
|
||||
default: return (uint16_t)clamp(val, 0, 255);
|
||||
case 10: return (uint16_t)clamp(val, 0, 1023);
|
||||
case 12: return (uint16_t)clamp(val, 0, 4095);
|
||||
}
|
||||
}
|
||||
|
||||
// The result of this branchless code is equivalent to (value < 0 ? 0 : value)
|
||||
// or max(0, value) and might be faster in some cases.
|
||||
// Care should be taken since the behavior of right shifting signed type
|
||||
// negative value is undefined by C standards and implementation defined,
|
||||
static INLINE unsigned int negative_to_zero(int value) {
|
||||
return value & ~(value >> (sizeof(value) * 8 - 1));
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif // AOM_AOM_DSP_AOM_DSP_COMMON_H_
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user