| // Copyright (c) 2011 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. |
| |
| #include "base/logging.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "media/base/media.h" |
| #include "media/ffmpeg/ffmpeg_common.h" |
| #include "media/filters/ffmpeg_glue.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace media { |
| |
| // Verify that the AV_CODEC_ID values match what is specified in histograms.xml |
| // for Media.DetectedAudioCodec and Media.DetectedVideoCodec |
| #define STATIC_ASSERT(test) static_assert(test, #test) |
| STATIC_ASSERT(0 == AV_CODEC_ID_NONE); |
| STATIC_ASSERT(1 == AV_CODEC_ID_MPEG1VIDEO); |
| STATIC_ASSERT(2 == AV_CODEC_ID_MPEG2VIDEO); |
| STATIC_ASSERT(3 == AV_CODEC_ID_MPEG2VIDEO_XVMC); |
| STATIC_ASSERT(4 == AV_CODEC_ID_H261); |
| STATIC_ASSERT(5 == AV_CODEC_ID_H263); |
| STATIC_ASSERT(6 == AV_CODEC_ID_RV10); |
| STATIC_ASSERT(7 == AV_CODEC_ID_RV20); |
| STATIC_ASSERT(8 == AV_CODEC_ID_MJPEG); |
| STATIC_ASSERT(9 == AV_CODEC_ID_MJPEGB); |
| STATIC_ASSERT(10 == AV_CODEC_ID_LJPEG); |
| STATIC_ASSERT(11 == AV_CODEC_ID_SP5X); |
| STATIC_ASSERT(12 == AV_CODEC_ID_JPEGLS); |
| STATIC_ASSERT(13 == AV_CODEC_ID_MPEG4); |
| STATIC_ASSERT(14 == AV_CODEC_ID_RAWVIDEO); |
| STATIC_ASSERT(15 == AV_CODEC_ID_MSMPEG4V1); |
| STATIC_ASSERT(16 == AV_CODEC_ID_MSMPEG4V2); |
| STATIC_ASSERT(17 == AV_CODEC_ID_MSMPEG4V3); |
| STATIC_ASSERT(18 == AV_CODEC_ID_WMV1); |
| STATIC_ASSERT(19 == AV_CODEC_ID_WMV2); |
| STATIC_ASSERT(20 == AV_CODEC_ID_H263P); |
| STATIC_ASSERT(21 == AV_CODEC_ID_H263I); |
| STATIC_ASSERT(22 == AV_CODEC_ID_FLV1); |
| STATIC_ASSERT(23 == AV_CODEC_ID_SVQ1); |
| STATIC_ASSERT(24 == AV_CODEC_ID_SVQ3); |
| STATIC_ASSERT(25 == AV_CODEC_ID_DVVIDEO); |
| STATIC_ASSERT(26 == AV_CODEC_ID_HUFFYUV); |
| STATIC_ASSERT(27 == AV_CODEC_ID_CYUV); |
| STATIC_ASSERT(28 == AV_CODEC_ID_H264); |
| STATIC_ASSERT(29 == AV_CODEC_ID_INDEO3); |
| STATIC_ASSERT(30 == AV_CODEC_ID_VP3); |
| STATIC_ASSERT(31 == AV_CODEC_ID_THEORA); |
| STATIC_ASSERT(32 == AV_CODEC_ID_ASV1); |
| STATIC_ASSERT(33 == AV_CODEC_ID_ASV2); |
| STATIC_ASSERT(34 == AV_CODEC_ID_FFV1); |
| STATIC_ASSERT(35 == AV_CODEC_ID_4XM); |
| STATIC_ASSERT(36 == AV_CODEC_ID_VCR1); |
| STATIC_ASSERT(37 == AV_CODEC_ID_CLJR); |
| STATIC_ASSERT(38 == AV_CODEC_ID_MDEC); |
| STATIC_ASSERT(39 == AV_CODEC_ID_ROQ); |
| STATIC_ASSERT(40 == AV_CODEC_ID_INTERPLAY_VIDEO); |
| STATIC_ASSERT(41 == AV_CODEC_ID_XAN_WC3); |
| STATIC_ASSERT(42 == AV_CODEC_ID_XAN_WC4); |
| STATIC_ASSERT(43 == AV_CODEC_ID_RPZA); |
| STATIC_ASSERT(44 == AV_CODEC_ID_CINEPAK); |
| STATIC_ASSERT(45 == AV_CODEC_ID_WS_VQA); |
| STATIC_ASSERT(46 == AV_CODEC_ID_MSRLE); |
| STATIC_ASSERT(47 == AV_CODEC_ID_MSVIDEO1); |
| STATIC_ASSERT(48 == AV_CODEC_ID_IDCIN); |
| STATIC_ASSERT(49 == AV_CODEC_ID_8BPS); |
| STATIC_ASSERT(50 == AV_CODEC_ID_SMC); |
| STATIC_ASSERT(51 == AV_CODEC_ID_FLIC); |
| STATIC_ASSERT(52 == AV_CODEC_ID_TRUEMOTION1); |
| STATIC_ASSERT(53 == AV_CODEC_ID_VMDVIDEO); |
| STATIC_ASSERT(54 == AV_CODEC_ID_MSZH); |
| STATIC_ASSERT(55 == AV_CODEC_ID_ZLIB); |
| STATIC_ASSERT(56 == AV_CODEC_ID_QTRLE); |
| STATIC_ASSERT(57 == AV_CODEC_ID_SNOW_DEPRECATED); |
| STATIC_ASSERT(58 == AV_CODEC_ID_TSCC); |
| STATIC_ASSERT(59 == AV_CODEC_ID_ULTI); |
| STATIC_ASSERT(60 == AV_CODEC_ID_QDRAW); |
| STATIC_ASSERT(61 == AV_CODEC_ID_VIXL); |
| STATIC_ASSERT(62 == AV_CODEC_ID_QPEG); |
| STATIC_ASSERT(63 == AV_CODEC_ID_PNG); |
| STATIC_ASSERT(64 == AV_CODEC_ID_PPM); |
| STATIC_ASSERT(65 == AV_CODEC_ID_PBM); |
| STATIC_ASSERT(66 == AV_CODEC_ID_PGM); |
| STATIC_ASSERT(67 == AV_CODEC_ID_PGMYUV); |
| STATIC_ASSERT(68 == AV_CODEC_ID_PAM); |
| STATIC_ASSERT(69 == AV_CODEC_ID_FFVHUFF); |
| STATIC_ASSERT(70 == AV_CODEC_ID_RV30); |
| STATIC_ASSERT(71 == AV_CODEC_ID_RV40); |
| STATIC_ASSERT(72 == AV_CODEC_ID_VC1); |
| STATIC_ASSERT(73 == AV_CODEC_ID_WMV3); |
| STATIC_ASSERT(74 == AV_CODEC_ID_LOCO); |
| STATIC_ASSERT(75 == AV_CODEC_ID_WNV1); |
| STATIC_ASSERT(76 == AV_CODEC_ID_AASC); |
| STATIC_ASSERT(77 == AV_CODEC_ID_INDEO2); |
| STATIC_ASSERT(78 == AV_CODEC_ID_FRAPS); |
| STATIC_ASSERT(79 == AV_CODEC_ID_TRUEMOTION2); |
| STATIC_ASSERT(80 == AV_CODEC_ID_BMP); |
| STATIC_ASSERT(81 == AV_CODEC_ID_CSCD); |
| STATIC_ASSERT(82 == AV_CODEC_ID_MMVIDEO); |
| STATIC_ASSERT(83 == AV_CODEC_ID_ZMBV); |
| STATIC_ASSERT(84 == AV_CODEC_ID_AVS); |
| STATIC_ASSERT(85 == AV_CODEC_ID_SMACKVIDEO); |
| STATIC_ASSERT(86 == AV_CODEC_ID_NUV); |
| STATIC_ASSERT(87 == AV_CODEC_ID_KMVC); |
| STATIC_ASSERT(88 == AV_CODEC_ID_FLASHSV); |
| STATIC_ASSERT(89 == AV_CODEC_ID_CAVS); |
| STATIC_ASSERT(90 == AV_CODEC_ID_JPEG2000); |
| STATIC_ASSERT(91 == AV_CODEC_ID_VMNC); |
| STATIC_ASSERT(92 == AV_CODEC_ID_VP5); |
| STATIC_ASSERT(93 == AV_CODEC_ID_VP6); |
| STATIC_ASSERT(94 == AV_CODEC_ID_VP6F); |
| STATIC_ASSERT(95 == AV_CODEC_ID_TARGA); |
| STATIC_ASSERT(96 == AV_CODEC_ID_DSICINVIDEO); |
| STATIC_ASSERT(97 == AV_CODEC_ID_TIERTEXSEQVIDEO); |
| STATIC_ASSERT(98 == AV_CODEC_ID_TIFF); |
| STATIC_ASSERT(99 == AV_CODEC_ID_GIF); |
| STATIC_ASSERT(100 == AV_CODEC_ID_DXA); |
| STATIC_ASSERT(101 == AV_CODEC_ID_DNXHD); |
| STATIC_ASSERT(102 == AV_CODEC_ID_THP); |
| STATIC_ASSERT(103 == AV_CODEC_ID_SGI); |
| STATIC_ASSERT(104 == AV_CODEC_ID_C93); |
| STATIC_ASSERT(105 == AV_CODEC_ID_BETHSOFTVID); |
| STATIC_ASSERT(106 == AV_CODEC_ID_PTX); |
| STATIC_ASSERT(107 == AV_CODEC_ID_TXD); |
| STATIC_ASSERT(108 == AV_CODEC_ID_VP6A); |
| STATIC_ASSERT(109 == AV_CODEC_ID_AMV); |
| STATIC_ASSERT(110 == AV_CODEC_ID_VB); |
| STATIC_ASSERT(111 == AV_CODEC_ID_PCX); |
| STATIC_ASSERT(112 == AV_CODEC_ID_SUNRAST); |
| STATIC_ASSERT(113 == AV_CODEC_ID_INDEO4); |
| STATIC_ASSERT(114 == AV_CODEC_ID_INDEO5); |
| STATIC_ASSERT(115 == AV_CODEC_ID_MIMIC); |
| STATIC_ASSERT(116 == AV_CODEC_ID_RL2); |
| STATIC_ASSERT(117 == AV_CODEC_ID_ESCAPE124); |
| STATIC_ASSERT(118 == AV_CODEC_ID_DIRAC); |
| STATIC_ASSERT(119 == AV_CODEC_ID_BFI); |
| STATIC_ASSERT(120 == AV_CODEC_ID_CMV); |
| STATIC_ASSERT(121 == AV_CODEC_ID_MOTIONPIXELS); |
| STATIC_ASSERT(122 == AV_CODEC_ID_TGV); |
| STATIC_ASSERT(123 == AV_CODEC_ID_TGQ); |
| STATIC_ASSERT(124 == AV_CODEC_ID_TQI); |
| STATIC_ASSERT(125 == AV_CODEC_ID_AURA); |
| STATIC_ASSERT(126 == AV_CODEC_ID_AURA2); |
| STATIC_ASSERT(127 == AV_CODEC_ID_V210X); |
| STATIC_ASSERT(128 == AV_CODEC_ID_TMV); |
| STATIC_ASSERT(129 == AV_CODEC_ID_V210); |
| STATIC_ASSERT(130 == AV_CODEC_ID_DPX); |
| STATIC_ASSERT(131 == AV_CODEC_ID_MAD); |
| STATIC_ASSERT(132 == AV_CODEC_ID_FRWU); |
| STATIC_ASSERT(133 == AV_CODEC_ID_FLASHSV2); |
| STATIC_ASSERT(134 == AV_CODEC_ID_CDGRAPHICS); |
| STATIC_ASSERT(135 == AV_CODEC_ID_R210); |
| STATIC_ASSERT(136 == AV_CODEC_ID_ANM); |
| STATIC_ASSERT(137 == AV_CODEC_ID_BINKVIDEO); |
| STATIC_ASSERT(138 == AV_CODEC_ID_IFF_ILBM); |
| STATIC_ASSERT(139 == AV_CODEC_ID_IFF_BYTERUN1); |
| STATIC_ASSERT(140 == AV_CODEC_ID_KGV1); |
| STATIC_ASSERT(141 == AV_CODEC_ID_YOP); |
| STATIC_ASSERT(142 == AV_CODEC_ID_VP8); |
| STATIC_ASSERT(143 == AV_CODEC_ID_PICTOR); |
| STATIC_ASSERT(144 == AV_CODEC_ID_ANSI); |
| STATIC_ASSERT(145 == AV_CODEC_ID_A64_MULTI); |
| STATIC_ASSERT(146 == AV_CODEC_ID_A64_MULTI5); |
| STATIC_ASSERT(147 == AV_CODEC_ID_R10K); |
| STATIC_ASSERT(148 == AV_CODEC_ID_MXPEG); |
| STATIC_ASSERT(149 == AV_CODEC_ID_LAGARITH); |
| STATIC_ASSERT(150 == AV_CODEC_ID_PRORES); |
| STATIC_ASSERT(151 == AV_CODEC_ID_JV); |
| STATIC_ASSERT(152 == AV_CODEC_ID_DFA); |
| STATIC_ASSERT(153 == AV_CODEC_ID_WMV3IMAGE); |
| STATIC_ASSERT(154 == AV_CODEC_ID_VC1IMAGE); |
| STATIC_ASSERT(155 == AV_CODEC_ID_UTVIDEO); |
| STATIC_ASSERT(156 == AV_CODEC_ID_BMV_VIDEO); |
| STATIC_ASSERT(157 == AV_CODEC_ID_VBLE); |
| STATIC_ASSERT(158 == AV_CODEC_ID_DXTORY); |
| STATIC_ASSERT(159 == AV_CODEC_ID_V410); |
| STATIC_ASSERT(160 == AV_CODEC_ID_XWD); |
| STATIC_ASSERT(161 == AV_CODEC_ID_CDXL); |
| STATIC_ASSERT(162 == AV_CODEC_ID_XBM); |
| STATIC_ASSERT(163 == AV_CODEC_ID_ZEROCODEC); |
| STATIC_ASSERT(164 == AV_CODEC_ID_MSS1); |
| STATIC_ASSERT(165 == AV_CODEC_ID_MSA1); |
| STATIC_ASSERT(166 == AV_CODEC_ID_TSCC2); |
| STATIC_ASSERT(167 == AV_CODEC_ID_MTS2); |
| STATIC_ASSERT(168 == AV_CODEC_ID_CLLC); |
| STATIC_ASSERT(169 == AV_CODEC_ID_MSS2); |
| STATIC_ASSERT(170 == AV_CODEC_ID_VP9); |
| STATIC_ASSERT(65536 == AV_CODEC_ID_PCM_S16LE); |
| STATIC_ASSERT(65537 == AV_CODEC_ID_PCM_S16BE); |
| STATIC_ASSERT(65538 == AV_CODEC_ID_PCM_U16LE); |
| STATIC_ASSERT(65539 == AV_CODEC_ID_PCM_U16BE); |
| STATIC_ASSERT(65540 == AV_CODEC_ID_PCM_S8); |
| STATIC_ASSERT(65541 == AV_CODEC_ID_PCM_U8); |
| STATIC_ASSERT(65542 == AV_CODEC_ID_PCM_MULAW); |
| STATIC_ASSERT(65543 == AV_CODEC_ID_PCM_ALAW); |
| STATIC_ASSERT(65544 == AV_CODEC_ID_PCM_S32LE); |
| STATIC_ASSERT(65545 == AV_CODEC_ID_PCM_S32BE); |
| STATIC_ASSERT(65546 == AV_CODEC_ID_PCM_U32LE); |
| STATIC_ASSERT(65547 == AV_CODEC_ID_PCM_U32BE); |
| STATIC_ASSERT(65548 == AV_CODEC_ID_PCM_S24LE); |
| STATIC_ASSERT(65549 == AV_CODEC_ID_PCM_S24BE); |
| STATIC_ASSERT(65550 == AV_CODEC_ID_PCM_U24LE); |
| STATIC_ASSERT(65551 == AV_CODEC_ID_PCM_U24BE); |
| STATIC_ASSERT(65552 == AV_CODEC_ID_PCM_S24DAUD); |
| STATIC_ASSERT(65553 == AV_CODEC_ID_PCM_ZORK); |
| STATIC_ASSERT(65554 == AV_CODEC_ID_PCM_S16LE_PLANAR); |
| STATIC_ASSERT(65555 == AV_CODEC_ID_PCM_DVD); |
| STATIC_ASSERT(65556 == AV_CODEC_ID_PCM_F32BE); |
| STATIC_ASSERT(65557 == AV_CODEC_ID_PCM_F32LE); |
| STATIC_ASSERT(65558 == AV_CODEC_ID_PCM_F64BE); |
| STATIC_ASSERT(65559 == AV_CODEC_ID_PCM_F64LE); |
| STATIC_ASSERT(65560 == AV_CODEC_ID_PCM_BLURAY); |
| STATIC_ASSERT(65561 == AV_CODEC_ID_PCM_LXF); |
| STATIC_ASSERT(65562 == AV_CODEC_ID_S302M); |
| STATIC_ASSERT(65563 == AV_CODEC_ID_PCM_S8_PLANAR); |
| STATIC_ASSERT(69632 == AV_CODEC_ID_ADPCM_IMA_QT); |
| STATIC_ASSERT(69633 == AV_CODEC_ID_ADPCM_IMA_WAV); |
| STATIC_ASSERT(69634 == AV_CODEC_ID_ADPCM_IMA_DK3); |
| STATIC_ASSERT(69635 == AV_CODEC_ID_ADPCM_IMA_DK4); |
| STATIC_ASSERT(69636 == AV_CODEC_ID_ADPCM_IMA_WS); |
| STATIC_ASSERT(69637 == AV_CODEC_ID_ADPCM_IMA_SMJPEG); |
| STATIC_ASSERT(69638 == AV_CODEC_ID_ADPCM_MS); |
| STATIC_ASSERT(69639 == AV_CODEC_ID_ADPCM_4XM); |
| STATIC_ASSERT(69640 == AV_CODEC_ID_ADPCM_XA); |
| STATIC_ASSERT(69641 == AV_CODEC_ID_ADPCM_ADX); |
| STATIC_ASSERT(69642 == AV_CODEC_ID_ADPCM_EA); |
| STATIC_ASSERT(69643 == AV_CODEC_ID_ADPCM_G726); |
| STATIC_ASSERT(69644 == AV_CODEC_ID_ADPCM_CT); |
| STATIC_ASSERT(69645 == AV_CODEC_ID_ADPCM_SWF); |
| STATIC_ASSERT(69646 == AV_CODEC_ID_ADPCM_YAMAHA); |
| STATIC_ASSERT(69647 == AV_CODEC_ID_ADPCM_SBPRO_4); |
| STATIC_ASSERT(69648 == AV_CODEC_ID_ADPCM_SBPRO_3); |
| STATIC_ASSERT(69649 == AV_CODEC_ID_ADPCM_SBPRO_2); |
| STATIC_ASSERT(69650 == AV_CODEC_ID_ADPCM_THP); |
| STATIC_ASSERT(69651 == AV_CODEC_ID_ADPCM_IMA_AMV); |
| STATIC_ASSERT(69652 == AV_CODEC_ID_ADPCM_EA_R1); |
| STATIC_ASSERT(69653 == AV_CODEC_ID_ADPCM_EA_R3); |
| STATIC_ASSERT(69654 == AV_CODEC_ID_ADPCM_EA_R2); |
| STATIC_ASSERT(69655 == AV_CODEC_ID_ADPCM_IMA_EA_SEAD); |
| STATIC_ASSERT(69656 == AV_CODEC_ID_ADPCM_IMA_EA_EACS); |
| STATIC_ASSERT(69657 == AV_CODEC_ID_ADPCM_EA_XAS); |
| STATIC_ASSERT(69658 == AV_CODEC_ID_ADPCM_EA_MAXIS_XA); |
| STATIC_ASSERT(69659 == AV_CODEC_ID_ADPCM_IMA_ISS); |
| STATIC_ASSERT(69660 == AV_CODEC_ID_ADPCM_G722); |
| STATIC_ASSERT(69661 == AV_CODEC_ID_ADPCM_IMA_APC); |
| STATIC_ASSERT(73728 == AV_CODEC_ID_AMR_NB); |
| STATIC_ASSERT(73729 == AV_CODEC_ID_AMR_WB); |
| STATIC_ASSERT(77824 == AV_CODEC_ID_RA_144); |
| STATIC_ASSERT(77825 == AV_CODEC_ID_RA_288); |
| STATIC_ASSERT(81920 == AV_CODEC_ID_ROQ_DPCM); |
| STATIC_ASSERT(81921 == AV_CODEC_ID_INTERPLAY_DPCM); |
| STATIC_ASSERT(81922 == AV_CODEC_ID_XAN_DPCM); |
| STATIC_ASSERT(81923 == AV_CODEC_ID_SOL_DPCM); |
| STATIC_ASSERT(86016 == AV_CODEC_ID_MP2); |
| STATIC_ASSERT(86017 == AV_CODEC_ID_MP3); |
| STATIC_ASSERT(86018 == AV_CODEC_ID_AAC); |
| STATIC_ASSERT(86019 == AV_CODEC_ID_AC3); |
| STATIC_ASSERT(86020 == AV_CODEC_ID_DTS); |
| STATIC_ASSERT(86021 == AV_CODEC_ID_VORBIS); |
| STATIC_ASSERT(86022 == AV_CODEC_ID_DVAUDIO); |
| STATIC_ASSERT(86023 == AV_CODEC_ID_WMAV1); |
| STATIC_ASSERT(86024 == AV_CODEC_ID_WMAV2); |
| STATIC_ASSERT(86025 == AV_CODEC_ID_MACE3); |
| STATIC_ASSERT(86026 == AV_CODEC_ID_MACE6); |
| STATIC_ASSERT(86027 == AV_CODEC_ID_VMDAUDIO); |
| STATIC_ASSERT(86028 == AV_CODEC_ID_FLAC); |
| STATIC_ASSERT(86029 == AV_CODEC_ID_MP3ADU); |
| STATIC_ASSERT(86030 == AV_CODEC_ID_MP3ON4); |
| STATIC_ASSERT(86031 == AV_CODEC_ID_SHORTEN); |
| STATIC_ASSERT(86032 == AV_CODEC_ID_ALAC); |
| STATIC_ASSERT(86033 == AV_CODEC_ID_WESTWOOD_SND1); |
| STATIC_ASSERT(86034 == AV_CODEC_ID_GSM); |
| STATIC_ASSERT(86035 == AV_CODEC_ID_QDM2); |
| STATIC_ASSERT(86036 == AV_CODEC_ID_COOK); |
| STATIC_ASSERT(86037 == AV_CODEC_ID_TRUESPEECH); |
| STATIC_ASSERT(86038 == AV_CODEC_ID_TTA); |
| STATIC_ASSERT(86039 == AV_CODEC_ID_SMACKAUDIO); |
| STATIC_ASSERT(86040 == AV_CODEC_ID_QCELP); |
| STATIC_ASSERT(86041 == AV_CODEC_ID_WAVPACK); |
| STATIC_ASSERT(86042 == AV_CODEC_ID_DSICINAUDIO); |
| STATIC_ASSERT(86043 == AV_CODEC_ID_IMC); |
| STATIC_ASSERT(86044 == AV_CODEC_ID_MUSEPACK7); |
| STATIC_ASSERT(86045 == AV_CODEC_ID_MLP); |
| STATIC_ASSERT(86046 == AV_CODEC_ID_GSM_MS); |
| STATIC_ASSERT(86047 == AV_CODEC_ID_ATRAC3); |
| STATIC_ASSERT(86048 == AV_CODEC_ID_VOXWARE); |
| STATIC_ASSERT(86049 == AV_CODEC_ID_APE); |
| STATIC_ASSERT(86050 == AV_CODEC_ID_NELLYMOSER); |
| STATIC_ASSERT(86051 == AV_CODEC_ID_MUSEPACK8); |
| STATIC_ASSERT(86052 == AV_CODEC_ID_SPEEX); |
| STATIC_ASSERT(86053 == AV_CODEC_ID_WMAVOICE); |
| STATIC_ASSERT(86054 == AV_CODEC_ID_WMAPRO); |
| STATIC_ASSERT(86055 == AV_CODEC_ID_WMALOSSLESS); |
| STATIC_ASSERT(86056 == AV_CODEC_ID_ATRAC3P); |
| STATIC_ASSERT(86057 == AV_CODEC_ID_EAC3); |
| STATIC_ASSERT(86058 == AV_CODEC_ID_SIPR); |
| STATIC_ASSERT(86059 == AV_CODEC_ID_MP1); |
| STATIC_ASSERT(86060 == AV_CODEC_ID_TWINVQ); |
| STATIC_ASSERT(86061 == AV_CODEC_ID_TRUEHD); |
| STATIC_ASSERT(86062 == AV_CODEC_ID_MP4ALS); |
| STATIC_ASSERT(86063 == AV_CODEC_ID_ATRAC1); |
| STATIC_ASSERT(86064 == AV_CODEC_ID_BINKAUDIO_RDFT); |
| STATIC_ASSERT(86065 == AV_CODEC_ID_BINKAUDIO_DCT); |
| STATIC_ASSERT(86066 == AV_CODEC_ID_AAC_LATM); |
| STATIC_ASSERT(86067 == AV_CODEC_ID_QDMC); |
| STATIC_ASSERT(86068 == AV_CODEC_ID_CELT); |
| STATIC_ASSERT(86069 == AV_CODEC_ID_G723_1); |
| STATIC_ASSERT(86070 == AV_CODEC_ID_G729); |
| STATIC_ASSERT(86071 == AV_CODEC_ID_8SVX_EXP); |
| STATIC_ASSERT(86072 == AV_CODEC_ID_8SVX_FIB); |
| STATIC_ASSERT(86073 == AV_CODEC_ID_BMV_AUDIO); |
| STATIC_ASSERT(86074 == AV_CODEC_ID_RALF); |
| STATIC_ASSERT(86075 == AV_CODEC_ID_IAC); |
| STATIC_ASSERT(86076 == AV_CODEC_ID_ILBC); |
| STATIC_ASSERT(86077 == AV_CODEC_ID_OPUS_DEPRECATED); |
| STATIC_ASSERT(86078 == AV_CODEC_ID_COMFORT_NOISE); |
| STATIC_ASSERT(86079 == AV_CODEC_ID_TAK_DEPRECATED); |
| STATIC_ASSERT(94208 == AV_CODEC_ID_DVD_SUBTITLE); |
| STATIC_ASSERT(94209 == AV_CODEC_ID_DVB_SUBTITLE); |
| STATIC_ASSERT(94210 == AV_CODEC_ID_TEXT); |
| STATIC_ASSERT(94211 == AV_CODEC_ID_XSUB); |
| STATIC_ASSERT(94212 == AV_CODEC_ID_SSA); |
| STATIC_ASSERT(94213 == AV_CODEC_ID_MOV_TEXT); |
| STATIC_ASSERT(94214 == AV_CODEC_ID_HDMV_PGS_SUBTITLE); |
| STATIC_ASSERT(94215 == AV_CODEC_ID_DVB_TELETEXT); |
| STATIC_ASSERT(94216 == AV_CODEC_ID_SRT); |
| STATIC_ASSERT(98304 == AV_CODEC_ID_TTF); |
| STATIC_ASSERT(102400 == AV_CODEC_ID_PROBE); |
| STATIC_ASSERT(131072 == AV_CODEC_ID_MPEG2TS); |
| STATIC_ASSERT(131073 == AV_CODEC_ID_MPEG4SYSTEMS); |
| STATIC_ASSERT(135168 == AV_CODEC_ID_FFMETADATA); |
| STATIC_ASSERT(4665933 == AV_CODEC_ID_G2M); |
| STATIC_ASSERT(4801606 == AV_CODEC_ID_IDF); |
| STATIC_ASSERT(5198918 == AV_CODEC_ID_OTF); |
| STATIC_ASSERT(407917392 == AV_CODEC_ID_PCM_S24LE_PLANAR); |
| STATIC_ASSERT(542135120 == AV_CODEC_ID_PCM_S32LE_PLANAR); |
| STATIC_ASSERT(808530518 == AV_CODEC_ID_012V); |
| STATIC_ASSERT(809850962 == AV_CODEC_ID_EXR); |
| // AV_CODEC_ID_8SVX_RAW(944985688) is no longer supported by ffmpeg but remains |
| // in histograms.xml for historical purposes. |
| STATIC_ASSERT(1095123744 == AV_CODEC_ID_ADPCM_AFC); |
| STATIC_ASSERT(1096176208 == AV_CODEC_ID_AVRP); |
| STATIC_ASSERT(1096176238 == AV_CODEC_ID_AVRN); |
| STATIC_ASSERT(1096176969 == AV_CODEC_ID_AVUI); |
| STATIC_ASSERT(1096373590 == AV_CODEC_ID_AYUV); |
| STATIC_ASSERT(1112557912 == AV_CODEC_ID_BRENDER_PIX); |
| STATIC_ASSERT(1112823892 == AV_CODEC_ID_BINTEXT); |
| STATIC_ASSERT(1129335105 == AV_CODEC_ID_CPIA); |
| STATIC_ASSERT(1160852272 == AV_CODEC_ID_ESCAPE130); |
| STATIC_ASSERT(1179014995 == AV_CODEC_ID_FFWAVESYNTH); |
| STATIC_ASSERT(1211250229 == AV_CODEC_ID_HEVC); |
| STATIC_ASSERT(1246975298 == AV_CODEC_ID_JACOSUB); |
| STATIC_ASSERT(1263294017 == AV_CODEC_ID_SMPTE_KLV); |
| STATIC_ASSERT(1297108018 == AV_CODEC_ID_MPL2); |
| STATIC_ASSERT(1297498929 == AV_CODEC_ID_MVC1); |
| STATIC_ASSERT(1297498930 == AV_CODEC_ID_MVC2); |
| STATIC_ASSERT(1330333984 == AV_CODEC_ID_ADPCM_IMA_OKI); |
| STATIC_ASSERT(1330664787 == AV_CODEC_ID_OPUS); |
| STATIC_ASSERT(1346455105 == AV_CODEC_ID_PAF_AUDIO); |
| STATIC_ASSERT(1346455126 == AV_CODEC_ID_PAF_VIDEO); |
| STATIC_ASSERT(1347637264 == AV_CODEC_ID_PCM_S16BE_PLANAR); |
| STATIC_ASSERT(1349012051 == AV_CODEC_ID_PJS); |
| STATIC_ASSERT(1381259348 == AV_CODEC_ID_REALTEXT); |
| STATIC_ASSERT(1396788553 == AV_CODEC_ID_SAMI); |
| STATIC_ASSERT(1396788813 == AV_CODEC_ID_SANM); |
| STATIC_ASSERT(1397180754 == AV_CODEC_ID_SGIRLE); |
| STATIC_ASSERT(1397706307 == AV_CODEC_ID_SONIC); |
| STATIC_ASSERT(1397706316 == AV_CODEC_ID_SONIC_LS); |
| STATIC_ASSERT(1397909872 == AV_CODEC_ID_SUBRIP); |
| STATIC_ASSERT(1398953521 == AV_CODEC_ID_SUBVIEWER1); |
| STATIC_ASSERT(1400201814 == AV_CODEC_ID_SUBVIEWER); |
| STATIC_ASSERT(1412575542 == AV_CODEC_ID_TARGA_Y216); |
| STATIC_ASSERT(1446195256 == AV_CODEC_ID_V308); |
| STATIC_ASSERT(1446260792 == AV_CODEC_ID_V408); |
| STATIC_ASSERT(1447644481 == AV_CODEC_ID_VIMA); |
| STATIC_ASSERT(1448111218 == AV_CODEC_ID_VPLAYER); |
| STATIC_ASSERT(1465275476 == AV_CODEC_ID_WEBVTT); |
| STATIC_ASSERT(1480739150 == AV_CODEC_ID_XBIN); |
| STATIC_ASSERT(1480999235 == AV_CODEC_ID_XFACE); |
| STATIC_ASSERT(1496592720 == AV_CODEC_ID_Y41P); |
| STATIC_ASSERT(1498764852 == AV_CODEC_ID_YUV4); |
| STATIC_ASSERT(1664495672 == AV_CODEC_ID_EIA_608); |
| STATIC_ASSERT(1833195076 == AV_CODEC_ID_MICRODVD); |
| STATIC_ASSERT(1936029283 == AV_CODEC_ID_EVRC); |
| STATIC_ASSERT(1936944502 == AV_CODEC_ID_SMV); |
| STATIC_ASSERT(1950507339 == AV_CODEC_ID_TAK); |
| |
| class FFmpegCommonTest : public testing::Test { |
| public: |
| FFmpegCommonTest() { |
| FFmpegGlue::InitializeFFmpeg(); |
| } |
| ~FFmpegCommonTest() override{}; |
| }; |
| |
| TEST_F(FFmpegCommonTest, OpusAudioDecoderConfig) { |
| AVCodecContext context = {0}; |
| context.codec_type = AVMEDIA_TYPE_AUDIO; |
| context.codec_id = AV_CODEC_ID_OPUS; |
| context.channel_layout = CHANNEL_LAYOUT_STEREO; |
| context.channels = 2; |
| context.sample_fmt = AV_SAMPLE_FMT_FLT; |
| |
| // During conversion this sample rate should be changed to 48kHz. |
| context.sample_rate = 44100; |
| |
| AudioDecoderConfig decoder_config; |
| AVCodecContextToAudioDecoderConfig(&context, false, &decoder_config); |
| EXPECT_EQ(48000, decoder_config.samples_per_second()); |
| } |
| |
| TEST_F(FFmpegCommonTest, TimeBaseConversions) { |
| const int64 test_data[][5] = { |
| {1, 2, 1, 500000, 1 }, |
| {1, 3, 1, 333333, 1 }, |
| {1, 3, 2, 666667, 2 }, |
| }; |
| |
| for (size_t i = 0; i < arraysize(test_data); ++i) { |
| SCOPED_TRACE(i); |
| |
| AVRational time_base; |
| time_base.num = static_cast<int>(test_data[i][0]); |
| time_base.den = static_cast<int>(test_data[i][1]); |
| |
| base::TimeDelta time_delta = |
| ConvertFromTimeBase(time_base, test_data[i][2]); |
| |
| EXPECT_EQ(time_delta.InMicroseconds(), test_data[i][3]); |
| EXPECT_EQ(ConvertToTimeBase(time_base, time_delta), test_data[i][4]); |
| } |
| } |
| |
| TEST_F(FFmpegCommonTest, VerifyFormatSizes) { |
| for (AVSampleFormat format = AV_SAMPLE_FMT_NONE; |
| format < AV_SAMPLE_FMT_NB; |
| format = static_cast<AVSampleFormat>(format + 1)) { |
| SampleFormat sample_format = AVSampleFormatToSampleFormat(format); |
| if (sample_format == kUnknownSampleFormat) { |
| // This format not supported, so skip it. |
| continue; |
| } |
| |
| // Have FFMpeg compute the size of a buffer of 1 channel / 1 frame |
| // with 1 byte alignment to make sure the sizes match. |
| int single_buffer_size = av_samples_get_buffer_size(NULL, 1, 1, format, 1); |
| int bytes_per_channel = SampleFormatToBytesPerChannel(sample_format); |
| EXPECT_EQ(bytes_per_channel, single_buffer_size); |
| } |
| } |
| |
| TEST_F(FFmpegCommonTest, UTCDateToTime_Valid) { |
| base::Time result; |
| EXPECT_TRUE(FFmpegUTCDateToTime("2012-11-10 12:34:56", &result)); |
| |
| base::Time::Exploded exploded; |
| result.UTCExplode(&exploded); |
| EXPECT_TRUE(exploded.HasValidValues()); |
| EXPECT_EQ(2012, exploded.year); |
| EXPECT_EQ(11, exploded.month); |
| EXPECT_EQ(6, exploded.day_of_week); |
| EXPECT_EQ(10, exploded.day_of_month); |
| EXPECT_EQ(12, exploded.hour); |
| EXPECT_EQ(34, exploded.minute); |
| EXPECT_EQ(56, exploded.second); |
| EXPECT_EQ(0, exploded.millisecond); |
| } |
| |
| TEST_F(FFmpegCommonTest, UTCDateToTime_Invalid) { |
| const char* invalid_date_strings[] = { |
| "", |
| "2012-11-10", |
| "12:34:56", |
| "-- ::", |
| "2012-11-10 12:34:", |
| "2012-11-10 12::56", |
| "2012-11-10 :34:56", |
| "2012-11- 12:34:56", |
| "2012--10 12:34:56", |
| "-11-10 12:34:56", |
| "2012-11 12:34:56", |
| "2012-11-10-12 12:34:56", |
| "2012-11-10 12:34", |
| "2012-11-10 12:34:56:78", |
| "ABCD-11-10 12:34:56", |
| "2012-EF-10 12:34:56", |
| "2012-11-GH 12:34:56", |
| "2012-11-10 IJ:34:56", |
| "2012-11-10 12:JL:56", |
| "2012-11-10 12:34:MN", |
| "2012-11-10 12:34:56.123", |
| "2012-11-1012:34:56", |
| "2012-11-10 12:34:56 UTC", |
| }; |
| |
| for (size_t i = 0; i < arraysize(invalid_date_strings); ++i) { |
| const char* date_string = invalid_date_strings[i]; |
| base::Time result; |
| EXPECT_FALSE(FFmpegUTCDateToTime(date_string, &result)) |
| << "date_string '" << date_string << "'"; |
| EXPECT_TRUE(result.is_null()); |
| } |
| } |
| |
| } // namespace media |