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
325
326 /* various PCM "codecs" */
365
366 /* various ADPCM codecs */
419
420 /* AMR */
423
424 /* RealAudio codecs*/
427
428 /* various DPCM codecs */
438
439 /* audio codecs */
547
548 /* subtitle codecs */
576
577 /* other specific kind of codecs (generally used for attachments) */
580
593
594
595 AV_CODEC_ID_PROBE = 0x19000,
///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it
596
598 * stream (only used by libavformat) */
600 * stream (only used by libavformat) */
603 /**
604 * Dummy null video codec, useful mainly for development and debugging.
605 * Null encoder/decoder discard all input and never return any output.
606 */
608 /**
609 * Dummy null audio codec, useful mainly for development and debugging.
610 * Null encoder/decoder discard all input and never return any output.
611 */
613 };
614
615 /**
616 * Get the type of the given codec.
617 */
619
620 /**
621 * Get the name of a codec.
622 * @return a static string identifying the codec; never NULL
623 */
625
626 /**
627 * Return codec bits per sample.
628 *
629 * @param[in] codec_id the codec
630 * @return Number of bits per sample or zero if unknown for the given codec.
631 */
633
634 /**
635 * Return codec bits per sample.
636 * Only return non-zero if the bits per sample is exactly correct, not an
637 * approximation.
638 *
639 * @param[in] codec_id the codec
640 * @return Number of bits per sample or zero if unknown for the given codec.
641 */
643
644 /**
645 * Return a name for the specified profile, if available.
646 *
647 * @param codec_id the ID of the codec to which the requested profile belongs
648 * @param profile the profile value for which a name is requested
649 * @return A name for the profile if found, NULL otherwise.
650 *
651 * @note unlike av_get_profile_name(), which searches a list of profiles
652 * supported by a specific decoder or encoder implementation, this
653 * function searches the list of profiles from the AVCodecDescriptor
654 */
656
657 /**
658 * Return the PCM codec associated with a sample format.
659 * @param be endianness, 0 for little, 1 for big,
660 * -1 (or anything else) for native
661 * @return AV_CODEC_ID_PCM_* or AV_CODEC_ID_NONE
662 */
664
665 /**
666 * @}
667 */
668
669 #endif // AVCODEC_CODEC_ID_H