1 /*
2 * Codec IDs
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21 #ifndef AVCODEC_CODEC_ID_H
22 #define AVCODEC_CODEC_ID_H
23
26
28
29 /**
30 * @addtogroup lavc_core
31 * @{
32 */
33
34 /**
35 * Identify the syntax and semantics of the bitstream.
36 * The principle is roughly:
37 * Two decoders with the same ID can decode the same streams.
38 * Two encoders with the same ID can encode compatible streams.
39 * There may be slight deviations from the principle due to implementation
40 * details.
41 *
42 * If you add a codec ID to this list, add it so that
43 * 1. no value of an existing codec ID changes (that would break ABI),
44 * 2. it is as close as possible to similar codecs
45 *
46 * After adding new codec IDs, do not forget to add an entry to the codec
47 * descriptor list and bump libavcodec minor version.
48 */
51
52 /* video codecs */
189 #define AV_CODEC_ID_IFF_BYTERUN1 AV_CODEC_ID_IFF_ILBM
227 #define AV_CODEC_ID_H265 AV_CODEC_ID_HEVC
251 #define AV_CODEC_ID_H266 AV_CODEC_ID_VVC
256 #if FF_API_AYUV_CODECID
258 #endif
323
324 /* various PCM "codecs" */
363
364 /* various ADPCM codecs */
417
418 /* AMR */
421
422 /* RealAudio codecs*/
425
426 /* various DPCM codecs */
436
437 /* audio codecs */
541
542 /* subtitle codecs */
570
571 /* other specific kind of codecs (generally used for attachments) */
574
585
586
587 AV_CODEC_ID_PROBE = 0x19000,
///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it
588
590 * stream (only used by libavformat) */
592 * stream (only used by libavformat) */
595 /**
596 * Dummy null video codec, useful mainly for development and debugging.
597 * Null encoder/decoder discard all input and never return any output.
598 */
600 /**
601 * Dummy null audio codec, useful mainly for development and debugging.
602 * Null encoder/decoder discard all input and never return any output.
603 */
605 };
606
607 /**
608 * Get the type of the given codec.
609 */
611
612 /**
613 * Get the name of a codec.
614 * @return a static string identifying the codec; never NULL
615 */
617
618 /**
619 * Return codec bits per sample.
620 *
621 * @param[in] codec_id the codec
622 * @return Number of bits per sample or zero if unknown for the given codec.
623 */
625
626 /**
627 * Return codec bits per sample.
628 * Only return non-zero if the bits per sample is exactly correct, not an
629 * approximation.
630 *
631 * @param[in] codec_id the codec
632 * @return Number of bits per sample or zero if unknown for the given codec.
633 */
635
636 /**
637 * Return a name for the specified profile, if available.
638 *
639 * @param codec_id the ID of the codec to which the requested profile belongs
640 * @param profile the profile value for which a name is requested
641 * @return A name for the profile if found, NULL otherwise.
642 *
643 * @note unlike av_get_profile_name(), which searches a list of profiles
644 * supported by a specific decoder or encoder implementation, this
645 * function searches the list of profiles from the AVCodecDescriptor
646 */
648
649 /**
650 * Return the PCM codec associated with a sample format.
651 * @param be endianness, 0 for little, 1 for big,
652 * -1 (or anything else) for native
653 * @return AV_CODEC_ID_PCM_* or AV_CODEC_ID_NONE
654 */
656
657 /**
658 * @}
659 */
660
661 #endif // AVCODEC_CODEC_ID_H