23 #include <com/avpkit/ferry/RefCounted.h>
24 #include <com/avpkit/core/AVPKit.h>
25 #include <com/avpkit/core/IRational.h>
26 #include <com/avpkit/core/IPixelFormat.h>
27 #include <com/avpkit/core/IAudioSamples.h>
30 #include <libavutil/version.h>
31 #include <libavcodec/version.h>
45 class IContainerFormat;
65 AV_CODEC_ID_MPEG1VIDEO,
78 AV_CODEC_ID_MSMPEG4V1,
79 AV_CODEC_ID_MSMPEG4V2,
80 AV_CODEC_ID_MSMPEG4V3,
103 AV_CODEC_ID_INTERPLAY_VIDEO,
110 AV_CODEC_ID_MSVIDEO1,
115 AV_CODEC_ID_TRUEMOTION1,
116 AV_CODEC_ID_VMDVIDEO,
141 AV_CODEC_ID_TRUEMOTION2,
147 AV_CODEC_ID_SMACKVIDEO,
152 AV_CODEC_ID_JPEG2000,
158 AV_CODEC_ID_DSICINVIDEO,
159 AV_CODEC_ID_TIERTEXSEQVIDEO,
167 AV_CODEC_ID_BETHSOFTVID,
179 AV_CODEC_ID_ESCAPE124,
183 AV_CODEC_ID_MOTIONPIXELS,
195 AV_CODEC_ID_FLASHSV2,
196 AV_CODEC_ID_CDGRAPHICS,
199 AV_CODEC_ID_BINKVIDEO,
200 AV_CODEC_ID_IFF_ILBM,
201 #define AV_CODEC_ID_IFF_BYTERUN1 AV_CODEC_ID_IFF_ILBM
207 AV_CODEC_ID_A64_MULTI,
208 AV_CODEC_ID_A64_MULTI5,
211 AV_CODEC_ID_LAGARITH,
215 AV_CODEC_ID_WMV3IMAGE,
216 AV_CODEC_ID_VC1IMAGE,
218 AV_CODEC_ID_BMV_VIDEO,
225 AV_CODEC_ID_ZEROCODEC,
234 AV_CODEC_ID_ESCAPE130,
237 AV_CODEC_ID_HNM4_VIDEO,
239 #define AV_CODEC_ID_H265 AV_CODEC_ID_HEVC
241 AV_CODEC_ID_ALIAS_PIX,
242 AV_CODEC_ID_BRENDER_PIX,
243 AV_CODEC_ID_PAF_VIDEO,
256 AV_CODEC_ID_SCREENPRESSO,
260 AV_CODEC_ID_Y41P = 0x8000,
265 AV_CODEC_ID_TARGA_Y216,
277 AV_CODEC_ID_TRUEMOTION2RT,
279 AV_CODEC_ID_MAGICYUV,
280 AV_CODEC_ID_SHEERVIDEO,
287 AV_CODEC_ID_CLEARVIDEO,
290 AV_CODEC_ID_BITPACKED,
297 AV_CODEC_ID_PROSUMER,
315 AV_CODEC_ID_FIRST_AUDIO = 0x10000,
316 AV_CODEC_ID_PCM_S16LE = 0x10000,
317 AV_CODEC_ID_PCM_S16BE,
318 AV_CODEC_ID_PCM_U16LE,
319 AV_CODEC_ID_PCM_U16BE,
322 AV_CODEC_ID_PCM_MULAW,
323 AV_CODEC_ID_PCM_ALAW,
324 AV_CODEC_ID_PCM_S32LE,
325 AV_CODEC_ID_PCM_S32BE,
326 AV_CODEC_ID_PCM_U32LE,
327 AV_CODEC_ID_PCM_U32BE,
328 AV_CODEC_ID_PCM_S24LE,
329 AV_CODEC_ID_PCM_S24BE,
330 AV_CODEC_ID_PCM_U24LE,
331 AV_CODEC_ID_PCM_U24BE,
332 AV_CODEC_ID_PCM_S24DAUD,
333 AV_CODEC_ID_PCM_ZORK,
334 AV_CODEC_ID_PCM_S16LE_PLANAR,
336 AV_CODEC_ID_PCM_F32BE,
337 AV_CODEC_ID_PCM_F32LE,
338 AV_CODEC_ID_PCM_F64BE,
339 AV_CODEC_ID_PCM_F64LE,
340 AV_CODEC_ID_PCM_BLURAY,
343 AV_CODEC_ID_PCM_S8_PLANAR,
344 AV_CODEC_ID_PCM_S24LE_PLANAR,
345 AV_CODEC_ID_PCM_S32LE_PLANAR,
346 AV_CODEC_ID_PCM_S16BE_PLANAR,
348 AV_CODEC_ID_PCM_S64LE = 0x10800,
349 AV_CODEC_ID_PCM_S64BE,
350 AV_CODEC_ID_PCM_F16LE,
351 AV_CODEC_ID_PCM_F24LE,
352 AV_CODEC_ID_PCM_VIDC,
355 AV_CODEC_ID_ADPCM_IMA_QT = 0x11000,
356 AV_CODEC_ID_ADPCM_IMA_WAV,
357 AV_CODEC_ID_ADPCM_IMA_DK3,
358 AV_CODEC_ID_ADPCM_IMA_DK4,
359 AV_CODEC_ID_ADPCM_IMA_WS,
360 AV_CODEC_ID_ADPCM_IMA_SMJPEG,
361 AV_CODEC_ID_ADPCM_MS,
362 AV_CODEC_ID_ADPCM_4XM,
363 AV_CODEC_ID_ADPCM_XA,
364 AV_CODEC_ID_ADPCM_ADX,
365 AV_CODEC_ID_ADPCM_EA,
366 AV_CODEC_ID_ADPCM_G726,
367 AV_CODEC_ID_ADPCM_CT,
368 AV_CODEC_ID_ADPCM_SWF,
369 AV_CODEC_ID_ADPCM_YAMAHA,
370 AV_CODEC_ID_ADPCM_SBPRO_4,
371 AV_CODEC_ID_ADPCM_SBPRO_3,
372 AV_CODEC_ID_ADPCM_SBPRO_2,
373 AV_CODEC_ID_ADPCM_THP,
374 AV_CODEC_ID_ADPCM_IMA_AMV,
375 AV_CODEC_ID_ADPCM_EA_R1,
376 AV_CODEC_ID_ADPCM_EA_R3,
377 AV_CODEC_ID_ADPCM_EA_R2,
378 AV_CODEC_ID_ADPCM_IMA_EA_SEAD,
379 AV_CODEC_ID_ADPCM_IMA_EA_EACS,
380 AV_CODEC_ID_ADPCM_EA_XAS,
381 AV_CODEC_ID_ADPCM_EA_MAXIS_XA,
382 AV_CODEC_ID_ADPCM_IMA_ISS,
383 AV_CODEC_ID_ADPCM_G722,
384 AV_CODEC_ID_ADPCM_IMA_APC,
385 AV_CODEC_ID_ADPCM_VIMA,
387 AV_CODEC_ID_ADPCM_AFC = 0x11800,
388 AV_CODEC_ID_ADPCM_IMA_OKI,
389 AV_CODEC_ID_ADPCM_DTK,
390 AV_CODEC_ID_ADPCM_IMA_RAD,
391 AV_CODEC_ID_ADPCM_G726LE,
392 AV_CODEC_ID_ADPCM_THP_LE,
393 AV_CODEC_ID_ADPCM_PSX,
394 AV_CODEC_ID_ADPCM_AICA,
395 AV_CODEC_ID_ADPCM_IMA_DAT4,
396 AV_CODEC_ID_ADPCM_MTAF,
397 AV_CODEC_ID_ADPCM_AGM,
398 AV_CODEC_ID_ADPCM_ARGO,
399 AV_CODEC_ID_ADPCM_IMA_SSI,
400 AV_CODEC_ID_ADPCM_ZORK,
401 AV_CODEC_ID_ADPCM_IMA_APM,
402 AV_CODEC_ID_ADPCM_IMA_ALP,
403 AV_CODEC_ID_ADPCM_IMA_MTF,
404 AV_CODEC_ID_ADPCM_IMA_CUNNING,
407 AV_CODEC_ID_AMR_NB = 0x12000,
411 AV_CODEC_ID_RA_144 = 0x13000,
415 AV_CODEC_ID_ROQ_DPCM = 0x14000,
416 AV_CODEC_ID_INTERPLAY_DPCM,
417 AV_CODEC_ID_XAN_DPCM,
418 AV_CODEC_ID_SOL_DPCM,
420 AV_CODEC_ID_SDX2_DPCM = 0x14800,
421 AV_CODEC_ID_GREMLIN_DPCM,
422 AV_CODEC_ID_DERF_DPCM,
425 AV_CODEC_ID_MP2 = 0x15000,
436 AV_CODEC_ID_VMDAUDIO,
442 AV_CODEC_ID_WESTWOOD_SND1,
446 AV_CODEC_ID_TRUESPEECH,
448 AV_CODEC_ID_SMACKAUDIO,
451 AV_CODEC_ID_DSICINAUDIO,
453 AV_CODEC_ID_MUSEPACK7,
458 AV_CODEC_ID_NELLYMOSER,
459 AV_CODEC_ID_MUSEPACK8,
461 AV_CODEC_ID_WMAVOICE,
463 AV_CODEC_ID_WMALOSSLESS,
472 AV_CODEC_ID_BINKAUDIO_RDFT,
473 AV_CODEC_ID_BINKAUDIO_DCT,
474 AV_CODEC_ID_AAC_LATM,
479 AV_CODEC_ID_8SVX_EXP,
480 AV_CODEC_ID_8SVX_FIB,
481 AV_CODEC_ID_BMV_AUDIO,
486 AV_CODEC_ID_COMFORT_NOISE,
488 AV_CODEC_ID_METASOUND,
489 AV_CODEC_ID_PAF_AUDIO,
494 AV_CODEC_ID_FFWAVESYNTH = 0x15800,
496 AV_CODEC_ID_SONIC_LS,
499 AV_CODEC_ID_DSD_LSBF,
500 AV_CODEC_ID_DSD_MSBF,
501 AV_CODEC_ID_DSD_LSBF_PLANAR,
502 AV_CODEC_ID_DSD_MSBF_PLANAR,
504 AV_CODEC_ID_INTERPLAY_ACM,
508 AV_CODEC_ID_ATRAC3AL,
509 AV_CODEC_ID_ATRAC3PAL,
516 AV_CODEC_ID_ACELP_KELVIN,
517 AV_CODEC_ID_MPEGH_3D_AUDIO,
522 AV_CODEC_ID_FIRST_SUBTITLE = 0x17000,
523 AV_CODEC_ID_DVD_SUBTITLE = 0x17000,
524 AV_CODEC_ID_DVB_SUBTITLE,
528 AV_CODEC_ID_MOV_TEXT,
529 AV_CODEC_ID_HDMV_PGS_SUBTITLE,
530 AV_CODEC_ID_DVB_TELETEXT,
533 AV_CODEC_ID_MICRODVD = 0x17800,
537 AV_CODEC_ID_REALTEXT,
539 AV_CODEC_ID_SUBVIEWER1,
540 AV_CODEC_ID_SUBVIEWER,
547 AV_CODEC_ID_HDMV_TEXT_SUBTITLE,
549 AV_CODEC_ID_ARIB_CAPTION,
552 AV_CODEC_ID_FIRST_UNKNOWN = 0x18000,
553 AV_CODEC_ID_TTF = 0x18000,
557 AV_CODEC_ID_BINTEXT = 0x18800,
561 AV_CODEC_ID_SMPTE_KLV,
563 AV_CODEC_ID_TIMED_ID3,
564 AV_CODEC_ID_BIN_DATA,
567 AV_CODEC_ID_PROBE = 0x19000,
569 AV_CODEC_ID_MPEG2TS = 0x20000,
571 AV_CODEC_ID_MPEG4SYSTEMS = 0x20001,
573 AV_CODEC_ID_FFMETADATA = 0x21000,
574 AV_CODEC_ID_WRAPPED_AVFRAME = 0x21001,
583 CODEC_TYPE_UNKNOWN = -1,
588 CODEC_TYPE_ATTACHMENT
650 findEncodingCodecByIntID(
int id);
658 findEncodingCodecByName(
const char*
id);
676 findDecodingCodecByIntID(
int id);
684 findDecodingCodecByName(
const char*
id);
702 const char*url,
const char*mimeType,
ICodec::Type type);
730 CAP_DRAW_HORIZ_BAND = 0x0001,
732 CAP_PARSE_ONLY = 0x0004,
733 CAP_TRUNCATED = 0x0008,
734 CAP_HWACCEL = 0x0010,
736 CAP_SMALL_LAST_FRAME = 0x0040,
737 CAP_HWACCEL_VDPAU = 0x0080,
738 CAP_SUBFRAMES =0x0100,
762 static int32_t getNumInstalledCodecs();
772 static ICodec* getInstalledCodec(int32_t index);
Format
The format we use to represent audio.
A "key" to an IStreamCoder that tells it how to encode or decode data.
Capabilities
Capability flags.
virtual bool canEncode()=0
Can this codec be used for encoding?
virtual ID getID()=0
Get the ID of this codec as an enumeration.
virtual bool hasCapability(Capabilities capability)=0
Convenience method to check individual capability flags.
virtual int getIDAsInt()=0
Get the ID of this codec, as an integer.
virtual IAudioSamples::Format getSupportedAudioSampleFormat(int32_t index)=0
Get the supported sample format at this index.
virtual IPixelFormat::Type getSupportedVideoPixelFormat(int32_t index)=0
Return the supported video pixel format at the given index.
virtual int32_t getNumSupportedVideoFrameRates()=0
Get the number of frame rates this codec supports for encoding.
virtual bool canDecode()=0
Can this codec be used for decoding?
virtual int32_t getCapabilities()=0
Get the capabilites flag from the codec.
virtual int32_t getNumSupportedVideoPixelFormats()=0
Get the number of supported video pixel formats this codec supports for encoding.
virtual int32_t getNumSupportedAudioChannelLayouts()=0
Get the number of different audio channel layouts this codec supports for encoding.
virtual int32_t getNumSupportedAudioSampleFormats()=0
Get the number of different audio sample formats this codec supports for encoding.
virtual const char * getName()=0
Get the name of the codec.
virtual const char * getLongName()=0
Added for 1.17.
virtual Type getType()=0
Get the type of this codec.
virtual IRational * getSupportedVideoFrameRate(int32_t index)=0
Return the supported frame rate at the given index.
virtual int32_t getNumSupportedAudioSampleRates()=0
Get the number of different audio sample rates this codec supports for encoding.
ID
These are the codecs this library currently supports.
@ AV_CODEC_ID_MPEG2VIDEO
preferred ID for MPEG-1/2 video decoding
@ AV_CODEC_ID_MP3
preferred ID for decoding MPEG audio layer 1, 2 or 3
@ AV_CODEC_ID_GSM
as in Berlin toast format
@ AV_CODEC_ID_SCTE_35
Contain timestamp estimated through PCR of program stream.
@ AV_CODEC_ID_TEXT
raw UTF-8 text
virtual int64_t getSupportedAudioChannelLayout(int32_t index)=0
Get the supported audio channel layout at this index.
virtual int32_t getSupportedAudioSampleRate(int32_t index)=0
Return the support audio sample rate at the given index.
Type
The different types of Codecs that can exist in the system.
This class wraps represents a Rational number for the AVPKit.
Parent of all Ferry objects – it mains reference counts in native code.
WARNING: Do not use logging in this class, and do not set any static file variables to values other t...