1*fb1b10abSAndroid Build Coastguard Worker /* 2*fb1b10abSAndroid Build Coastguard Worker * Copyright (c) 2013 The WebM project authors. All Rights Reserved. 3*fb1b10abSAndroid Build Coastguard Worker * 4*fb1b10abSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license 5*fb1b10abSAndroid Build Coastguard Worker * that can be found in the LICENSE file in the root of the source 6*fb1b10abSAndroid Build Coastguard Worker * tree. An additional intellectual property rights grant can be found 7*fb1b10abSAndroid Build Coastguard Worker * in the file PATENTS. All contributing project authors may 8*fb1b10abSAndroid Build Coastguard Worker * be found in the AUTHORS file in the root of the source tree. 9*fb1b10abSAndroid Build Coastguard Worker */ 10*fb1b10abSAndroid Build Coastguard Worker #ifndef VPX_TEST_CODEC_FACTORY_H_ 11*fb1b10abSAndroid Build Coastguard Worker #define VPX_TEST_CODEC_FACTORY_H_ 12*fb1b10abSAndroid Build Coastguard Worker 13*fb1b10abSAndroid Build Coastguard Worker #include <tuple> 14*fb1b10abSAndroid Build Coastguard Worker 15*fb1b10abSAndroid Build Coastguard Worker #include "./vpx_config.h" 16*fb1b10abSAndroid Build Coastguard Worker #include "vpx/vpx_decoder.h" 17*fb1b10abSAndroid Build Coastguard Worker #include "vpx/vpx_encoder.h" 18*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP8_ENCODER || CONFIG_VP9_ENCODER 19*fb1b10abSAndroid Build Coastguard Worker #include "vpx/vp8cx.h" 20*fb1b10abSAndroid Build Coastguard Worker #endif 21*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP8_DECODER || CONFIG_VP9_DECODER 22*fb1b10abSAndroid Build Coastguard Worker #include "vpx/vp8dx.h" 23*fb1b10abSAndroid Build Coastguard Worker #endif 24*fb1b10abSAndroid Build Coastguard Worker 25*fb1b10abSAndroid Build Coastguard Worker #include "test/decode_test_driver.h" 26*fb1b10abSAndroid Build Coastguard Worker #include "test/encode_test_driver.h" 27*fb1b10abSAndroid Build Coastguard Worker namespace libvpx_test { 28*fb1b10abSAndroid Build Coastguard Worker 29*fb1b10abSAndroid Build Coastguard Worker const int kCodecFactoryParam = 0; 30*fb1b10abSAndroid Build Coastguard Worker 31*fb1b10abSAndroid Build Coastguard Worker class CodecFactory { 32*fb1b10abSAndroid Build Coastguard Worker public: CodecFactory()33*fb1b10abSAndroid Build Coastguard Worker CodecFactory() {} 34*fb1b10abSAndroid Build Coastguard Worker ~CodecFactory()35*fb1b10abSAndroid Build Coastguard Worker virtual ~CodecFactory() {} 36*fb1b10abSAndroid Build Coastguard Worker 37*fb1b10abSAndroid Build Coastguard Worker virtual Decoder *CreateDecoder(vpx_codec_dec_cfg_t cfg) const = 0; 38*fb1b10abSAndroid Build Coastguard Worker 39*fb1b10abSAndroid Build Coastguard Worker virtual Decoder *CreateDecoder(vpx_codec_dec_cfg_t cfg, 40*fb1b10abSAndroid Build Coastguard Worker const vpx_codec_flags_t flags) const = 0; 41*fb1b10abSAndroid Build Coastguard Worker 42*fb1b10abSAndroid Build Coastguard Worker virtual Encoder *CreateEncoder(vpx_codec_enc_cfg_t cfg, 43*fb1b10abSAndroid Build Coastguard Worker vpx_enc_deadline_t deadline, 44*fb1b10abSAndroid Build Coastguard Worker const unsigned long init_flags, 45*fb1b10abSAndroid Build Coastguard Worker TwopassStatsStore *stats) const = 0; 46*fb1b10abSAndroid Build Coastguard Worker 47*fb1b10abSAndroid Build Coastguard Worker virtual vpx_codec_err_t DefaultEncoderConfig(vpx_codec_enc_cfg_t *cfg, 48*fb1b10abSAndroid Build Coastguard Worker int usage) const = 0; 49*fb1b10abSAndroid Build Coastguard Worker }; 50*fb1b10abSAndroid Build Coastguard Worker 51*fb1b10abSAndroid Build Coastguard Worker /* Provide CodecTestWith<n>Params classes for a variable number of parameters 52*fb1b10abSAndroid Build Coastguard Worker * to avoid having to include a pointer to the CodecFactory in every test 53*fb1b10abSAndroid Build Coastguard Worker * definition. 54*fb1b10abSAndroid Build Coastguard Worker */ 55*fb1b10abSAndroid Build Coastguard Worker template <class T1> 56*fb1b10abSAndroid Build Coastguard Worker class CodecTestWithParam 57*fb1b10abSAndroid Build Coastguard Worker : public ::testing::TestWithParam< 58*fb1b10abSAndroid Build Coastguard Worker std::tuple<const libvpx_test::CodecFactory *, T1> > {}; 59*fb1b10abSAndroid Build Coastguard Worker 60*fb1b10abSAndroid Build Coastguard Worker template <class T1, class T2> 61*fb1b10abSAndroid Build Coastguard Worker class CodecTestWith2Params 62*fb1b10abSAndroid Build Coastguard Worker : public ::testing::TestWithParam< 63*fb1b10abSAndroid Build Coastguard Worker std::tuple<const libvpx_test::CodecFactory *, T1, T2> > {}; 64*fb1b10abSAndroid Build Coastguard Worker 65*fb1b10abSAndroid Build Coastguard Worker template <class T1, class T2, class T3> 66*fb1b10abSAndroid Build Coastguard Worker class CodecTestWith3Params 67*fb1b10abSAndroid Build Coastguard Worker : public ::testing::TestWithParam< 68*fb1b10abSAndroid Build Coastguard Worker std::tuple<const libvpx_test::CodecFactory *, T1, T2, T3> > {}; 69*fb1b10abSAndroid Build Coastguard Worker 70*fb1b10abSAndroid Build Coastguard Worker template <class T1, class T2, class T3, class T4> 71*fb1b10abSAndroid Build Coastguard Worker class CodecTestWith4Params 72*fb1b10abSAndroid Build Coastguard Worker : public ::testing::TestWithParam< 73*fb1b10abSAndroid Build Coastguard Worker std::tuple<const libvpx_test::CodecFactory *, T1, T2, T3, T4> > {}; 74*fb1b10abSAndroid Build Coastguard Worker 75*fb1b10abSAndroid Build Coastguard Worker /* 76*fb1b10abSAndroid Build Coastguard Worker * VP8 Codec Definitions 77*fb1b10abSAndroid Build Coastguard Worker */ 78*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP8 79*fb1b10abSAndroid Build Coastguard Worker class VP8Decoder : public Decoder { 80*fb1b10abSAndroid Build Coastguard Worker public: VP8Decoder(vpx_codec_dec_cfg_t cfg)81*fb1b10abSAndroid Build Coastguard Worker explicit VP8Decoder(vpx_codec_dec_cfg_t cfg) : Decoder(cfg) {} 82*fb1b10abSAndroid Build Coastguard Worker VP8Decoder(vpx_codec_dec_cfg_t cfg,const vpx_codec_flags_t flag)83*fb1b10abSAndroid Build Coastguard Worker VP8Decoder(vpx_codec_dec_cfg_t cfg, const vpx_codec_flags_t flag) 84*fb1b10abSAndroid Build Coastguard Worker : Decoder(cfg, flag) {} 85*fb1b10abSAndroid Build Coastguard Worker 86*fb1b10abSAndroid Build Coastguard Worker protected: CodecInterface()87*fb1b10abSAndroid Build Coastguard Worker vpx_codec_iface_t *CodecInterface() const override { 88*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP8_DECODER 89*fb1b10abSAndroid Build Coastguard Worker return &vpx_codec_vp8_dx_algo; 90*fb1b10abSAndroid Build Coastguard Worker #else 91*fb1b10abSAndroid Build Coastguard Worker return nullptr; 92*fb1b10abSAndroid Build Coastguard Worker #endif 93*fb1b10abSAndroid Build Coastguard Worker } 94*fb1b10abSAndroid Build Coastguard Worker }; 95*fb1b10abSAndroid Build Coastguard Worker 96*fb1b10abSAndroid Build Coastguard Worker class VP8Encoder : public Encoder { 97*fb1b10abSAndroid Build Coastguard Worker public: VP8Encoder(vpx_codec_enc_cfg_t cfg,vpx_enc_deadline_t deadline,const unsigned long init_flags,TwopassStatsStore * stats)98*fb1b10abSAndroid Build Coastguard Worker VP8Encoder(vpx_codec_enc_cfg_t cfg, vpx_enc_deadline_t deadline, 99*fb1b10abSAndroid Build Coastguard Worker const unsigned long init_flags, TwopassStatsStore *stats) 100*fb1b10abSAndroid Build Coastguard Worker : Encoder(cfg, deadline, init_flags, stats) {} 101*fb1b10abSAndroid Build Coastguard Worker 102*fb1b10abSAndroid Build Coastguard Worker protected: CodecInterface()103*fb1b10abSAndroid Build Coastguard Worker vpx_codec_iface_t *CodecInterface() const override { 104*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP8_ENCODER 105*fb1b10abSAndroid Build Coastguard Worker return &vpx_codec_vp8_cx_algo; 106*fb1b10abSAndroid Build Coastguard Worker #else 107*fb1b10abSAndroid Build Coastguard Worker return nullptr; 108*fb1b10abSAndroid Build Coastguard Worker #endif 109*fb1b10abSAndroid Build Coastguard Worker } 110*fb1b10abSAndroid Build Coastguard Worker }; 111*fb1b10abSAndroid Build Coastguard Worker 112*fb1b10abSAndroid Build Coastguard Worker class VP8CodecFactory : public CodecFactory { 113*fb1b10abSAndroid Build Coastguard Worker public: VP8CodecFactory()114*fb1b10abSAndroid Build Coastguard Worker VP8CodecFactory() : CodecFactory() {} 115*fb1b10abSAndroid Build Coastguard Worker CreateDecoder(vpx_codec_dec_cfg_t cfg)116*fb1b10abSAndroid Build Coastguard Worker Decoder *CreateDecoder(vpx_codec_dec_cfg_t cfg) const override { 117*fb1b10abSAndroid Build Coastguard Worker return CreateDecoder(cfg, 0); 118*fb1b10abSAndroid Build Coastguard Worker } 119*fb1b10abSAndroid Build Coastguard Worker CreateDecoder(vpx_codec_dec_cfg_t cfg,const vpx_codec_flags_t flags)120*fb1b10abSAndroid Build Coastguard Worker Decoder *CreateDecoder(vpx_codec_dec_cfg_t cfg, 121*fb1b10abSAndroid Build Coastguard Worker const vpx_codec_flags_t flags) const override { 122*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP8_DECODER 123*fb1b10abSAndroid Build Coastguard Worker return new VP8Decoder(cfg, flags); 124*fb1b10abSAndroid Build Coastguard Worker #else 125*fb1b10abSAndroid Build Coastguard Worker (void)cfg; 126*fb1b10abSAndroid Build Coastguard Worker (void)flags; 127*fb1b10abSAndroid Build Coastguard Worker return nullptr; 128*fb1b10abSAndroid Build Coastguard Worker #endif 129*fb1b10abSAndroid Build Coastguard Worker } 130*fb1b10abSAndroid Build Coastguard Worker CreateEncoder(vpx_codec_enc_cfg_t cfg,vpx_enc_deadline_t deadline,const unsigned long init_flags,TwopassStatsStore * stats)131*fb1b10abSAndroid Build Coastguard Worker Encoder *CreateEncoder(vpx_codec_enc_cfg_t cfg, vpx_enc_deadline_t deadline, 132*fb1b10abSAndroid Build Coastguard Worker const unsigned long init_flags, 133*fb1b10abSAndroid Build Coastguard Worker TwopassStatsStore *stats) const override { 134*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP8_ENCODER 135*fb1b10abSAndroid Build Coastguard Worker return new VP8Encoder(cfg, deadline, init_flags, stats); 136*fb1b10abSAndroid Build Coastguard Worker #else 137*fb1b10abSAndroid Build Coastguard Worker (void)cfg; 138*fb1b10abSAndroid Build Coastguard Worker (void)deadline; 139*fb1b10abSAndroid Build Coastguard Worker (void)init_flags; 140*fb1b10abSAndroid Build Coastguard Worker (void)stats; 141*fb1b10abSAndroid Build Coastguard Worker return nullptr; 142*fb1b10abSAndroid Build Coastguard Worker #endif 143*fb1b10abSAndroid Build Coastguard Worker } 144*fb1b10abSAndroid Build Coastguard Worker DefaultEncoderConfig(vpx_codec_enc_cfg_t * cfg,int usage)145*fb1b10abSAndroid Build Coastguard Worker vpx_codec_err_t DefaultEncoderConfig(vpx_codec_enc_cfg_t *cfg, 146*fb1b10abSAndroid Build Coastguard Worker int usage) const override { 147*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP8_ENCODER 148*fb1b10abSAndroid Build Coastguard Worker return vpx_codec_enc_config_default(&vpx_codec_vp8_cx_algo, cfg, usage); 149*fb1b10abSAndroid Build Coastguard Worker #else 150*fb1b10abSAndroid Build Coastguard Worker (void)cfg; 151*fb1b10abSAndroid Build Coastguard Worker (void)usage; 152*fb1b10abSAndroid Build Coastguard Worker return VPX_CODEC_INCAPABLE; 153*fb1b10abSAndroid Build Coastguard Worker #endif 154*fb1b10abSAndroid Build Coastguard Worker } 155*fb1b10abSAndroid Build Coastguard Worker }; 156*fb1b10abSAndroid Build Coastguard Worker 157*fb1b10abSAndroid Build Coastguard Worker const libvpx_test::VP8CodecFactory kVP8; 158*fb1b10abSAndroid Build Coastguard Worker 159*fb1b10abSAndroid Build Coastguard Worker #define VP8_INSTANTIATE_TEST_SUITE(test, ...) \ 160*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P( \ 161*fb1b10abSAndroid Build Coastguard Worker VP8, test, \ 162*fb1b10abSAndroid Build Coastguard Worker ::testing::Combine( \ 163*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(static_cast<const libvpx_test::CodecFactory *>( \ 164*fb1b10abSAndroid Build Coastguard Worker &libvpx_test::kVP8)), \ 165*fb1b10abSAndroid Build Coastguard Worker __VA_ARGS__)) 166*fb1b10abSAndroid Build Coastguard Worker #else 167*fb1b10abSAndroid Build Coastguard Worker // static_assert() is used to avoid warnings about an extra ';' outside of a 168*fb1b10abSAndroid Build Coastguard Worker // function. 169*fb1b10abSAndroid Build Coastguard Worker #define VP8_INSTANTIATE_TEST_SUITE(test, ...) static_assert(CONFIG_VP8 == 0, "") 170*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP8 171*fb1b10abSAndroid Build Coastguard Worker 172*fb1b10abSAndroid Build Coastguard Worker /* 173*fb1b10abSAndroid Build Coastguard Worker * VP9 Codec Definitions 174*fb1b10abSAndroid Build Coastguard Worker */ 175*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9 176*fb1b10abSAndroid Build Coastguard Worker class VP9Decoder : public Decoder { 177*fb1b10abSAndroid Build Coastguard Worker public: VP9Decoder(vpx_codec_dec_cfg_t cfg)178*fb1b10abSAndroid Build Coastguard Worker explicit VP9Decoder(vpx_codec_dec_cfg_t cfg) : Decoder(cfg) {} 179*fb1b10abSAndroid Build Coastguard Worker VP9Decoder(vpx_codec_dec_cfg_t cfg,const vpx_codec_flags_t flag)180*fb1b10abSAndroid Build Coastguard Worker VP9Decoder(vpx_codec_dec_cfg_t cfg, const vpx_codec_flags_t flag) 181*fb1b10abSAndroid Build Coastguard Worker : Decoder(cfg, flag) {} 182*fb1b10abSAndroid Build Coastguard Worker 183*fb1b10abSAndroid Build Coastguard Worker protected: CodecInterface()184*fb1b10abSAndroid Build Coastguard Worker vpx_codec_iface_t *CodecInterface() const override { 185*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_DECODER 186*fb1b10abSAndroid Build Coastguard Worker return &vpx_codec_vp9_dx_algo; 187*fb1b10abSAndroid Build Coastguard Worker #else 188*fb1b10abSAndroid Build Coastguard Worker return nullptr; 189*fb1b10abSAndroid Build Coastguard Worker #endif 190*fb1b10abSAndroid Build Coastguard Worker } 191*fb1b10abSAndroid Build Coastguard Worker }; 192*fb1b10abSAndroid Build Coastguard Worker 193*fb1b10abSAndroid Build Coastguard Worker class VP9Encoder : public Encoder { 194*fb1b10abSAndroid Build Coastguard Worker public: VP9Encoder(vpx_codec_enc_cfg_t cfg,vpx_enc_deadline_t deadline,const unsigned long init_flags,TwopassStatsStore * stats)195*fb1b10abSAndroid Build Coastguard Worker VP9Encoder(vpx_codec_enc_cfg_t cfg, vpx_enc_deadline_t deadline, 196*fb1b10abSAndroid Build Coastguard Worker const unsigned long init_flags, TwopassStatsStore *stats) 197*fb1b10abSAndroid Build Coastguard Worker : Encoder(cfg, deadline, init_flags, stats) {} 198*fb1b10abSAndroid Build Coastguard Worker 199*fb1b10abSAndroid Build Coastguard Worker protected: CodecInterface()200*fb1b10abSAndroid Build Coastguard Worker vpx_codec_iface_t *CodecInterface() const override { 201*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_ENCODER 202*fb1b10abSAndroid Build Coastguard Worker return &vpx_codec_vp9_cx_algo; 203*fb1b10abSAndroid Build Coastguard Worker #else 204*fb1b10abSAndroid Build Coastguard Worker return nullptr; 205*fb1b10abSAndroid Build Coastguard Worker #endif 206*fb1b10abSAndroid Build Coastguard Worker } 207*fb1b10abSAndroid Build Coastguard Worker }; 208*fb1b10abSAndroid Build Coastguard Worker 209*fb1b10abSAndroid Build Coastguard Worker class VP9CodecFactory : public CodecFactory { 210*fb1b10abSAndroid Build Coastguard Worker public: VP9CodecFactory()211*fb1b10abSAndroid Build Coastguard Worker VP9CodecFactory() : CodecFactory() {} 212*fb1b10abSAndroid Build Coastguard Worker CreateDecoder(vpx_codec_dec_cfg_t cfg)213*fb1b10abSAndroid Build Coastguard Worker Decoder *CreateDecoder(vpx_codec_dec_cfg_t cfg) const override { 214*fb1b10abSAndroid Build Coastguard Worker return CreateDecoder(cfg, 0); 215*fb1b10abSAndroid Build Coastguard Worker } 216*fb1b10abSAndroid Build Coastguard Worker CreateDecoder(vpx_codec_dec_cfg_t cfg,const vpx_codec_flags_t flags)217*fb1b10abSAndroid Build Coastguard Worker Decoder *CreateDecoder(vpx_codec_dec_cfg_t cfg, 218*fb1b10abSAndroid Build Coastguard Worker const vpx_codec_flags_t flags) const override { 219*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_DECODER 220*fb1b10abSAndroid Build Coastguard Worker return new VP9Decoder(cfg, flags); 221*fb1b10abSAndroid Build Coastguard Worker #else 222*fb1b10abSAndroid Build Coastguard Worker (void)cfg; 223*fb1b10abSAndroid Build Coastguard Worker (void)flags; 224*fb1b10abSAndroid Build Coastguard Worker return nullptr; 225*fb1b10abSAndroid Build Coastguard Worker #endif 226*fb1b10abSAndroid Build Coastguard Worker } 227*fb1b10abSAndroid Build Coastguard Worker CreateEncoder(vpx_codec_enc_cfg_t cfg,vpx_enc_deadline_t deadline,const unsigned long init_flags,TwopassStatsStore * stats)228*fb1b10abSAndroid Build Coastguard Worker Encoder *CreateEncoder(vpx_codec_enc_cfg_t cfg, vpx_enc_deadline_t deadline, 229*fb1b10abSAndroid Build Coastguard Worker const unsigned long init_flags, 230*fb1b10abSAndroid Build Coastguard Worker TwopassStatsStore *stats) const override { 231*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_ENCODER 232*fb1b10abSAndroid Build Coastguard Worker return new VP9Encoder(cfg, deadline, init_flags, stats); 233*fb1b10abSAndroid Build Coastguard Worker #else 234*fb1b10abSAndroid Build Coastguard Worker (void)cfg; 235*fb1b10abSAndroid Build Coastguard Worker (void)deadline; 236*fb1b10abSAndroid Build Coastguard Worker (void)init_flags; 237*fb1b10abSAndroid Build Coastguard Worker (void)stats; 238*fb1b10abSAndroid Build Coastguard Worker return nullptr; 239*fb1b10abSAndroid Build Coastguard Worker #endif 240*fb1b10abSAndroid Build Coastguard Worker } 241*fb1b10abSAndroid Build Coastguard Worker DefaultEncoderConfig(vpx_codec_enc_cfg_t * cfg,int usage)242*fb1b10abSAndroid Build Coastguard Worker vpx_codec_err_t DefaultEncoderConfig(vpx_codec_enc_cfg_t *cfg, 243*fb1b10abSAndroid Build Coastguard Worker int usage) const override { 244*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_ENCODER 245*fb1b10abSAndroid Build Coastguard Worker return vpx_codec_enc_config_default(&vpx_codec_vp9_cx_algo, cfg, usage); 246*fb1b10abSAndroid Build Coastguard Worker #else 247*fb1b10abSAndroid Build Coastguard Worker (void)cfg; 248*fb1b10abSAndroid Build Coastguard Worker (void)usage; 249*fb1b10abSAndroid Build Coastguard Worker return VPX_CODEC_INCAPABLE; 250*fb1b10abSAndroid Build Coastguard Worker #endif 251*fb1b10abSAndroid Build Coastguard Worker } 252*fb1b10abSAndroid Build Coastguard Worker }; 253*fb1b10abSAndroid Build Coastguard Worker 254*fb1b10abSAndroid Build Coastguard Worker const libvpx_test::VP9CodecFactory kVP9; 255*fb1b10abSAndroid Build Coastguard Worker 256*fb1b10abSAndroid Build Coastguard Worker #define VP9_INSTANTIATE_TEST_SUITE(test, ...) \ 257*fb1b10abSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P( \ 258*fb1b10abSAndroid Build Coastguard Worker VP9, test, \ 259*fb1b10abSAndroid Build Coastguard Worker ::testing::Combine( \ 260*fb1b10abSAndroid Build Coastguard Worker ::testing::Values(static_cast<const libvpx_test::CodecFactory *>( \ 261*fb1b10abSAndroid Build Coastguard Worker &libvpx_test::kVP9)), \ 262*fb1b10abSAndroid Build Coastguard Worker __VA_ARGS__)) 263*fb1b10abSAndroid Build Coastguard Worker #else 264*fb1b10abSAndroid Build Coastguard Worker // static_assert() is used to avoid warnings about an extra ';' outside of a 265*fb1b10abSAndroid Build Coastguard Worker // function. 266*fb1b10abSAndroid Build Coastguard Worker #define VP9_INSTANTIATE_TEST_SUITE(test, ...) static_assert(CONFIG_VP9 == 0, "") 267*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_VP9 268*fb1b10abSAndroid Build Coastguard Worker 269*fb1b10abSAndroid Build Coastguard Worker } // namespace libvpx_test 270*fb1b10abSAndroid Build Coastguard Worker #endif // VPX_TEST_CODEC_FACTORY_H_ 271