tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

codec_desc.h (3974B)


      1 /*
      2 * Codec descriptors public API
      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_DESC_H
     22 #define AVCODEC_CODEC_DESC_H
     23 
     24 #include "libavutil/avutil.h"
     25 
     26 #include "codec_id.h"
     27 
     28 /**
     29 * @addtogroup lavc_core
     30 * @{
     31 */
     32 
     33 /**
     34 * This struct describes the properties of a single codec described by an
     35 * AVCodecID.
     36 * @see avcodec_descriptor_get()
     37 */
     38 typedef struct AVCodecDescriptor {
     39    enum AVCodecID     id;
     40    enum AVMediaType type;
     41    /**
     42     * Name of the codec described by this descriptor. It is non-empty and
     43     * unique for each codec descriptor. It should contain alphanumeric
     44     * characters and '_' only.
     45     */
     46    const char      *name;
     47    /**
     48     * A more descriptive name for this codec. May be NULL.
     49     */
     50    const char *long_name;
     51    /**
     52     * Codec properties, a combination of AV_CODEC_PROP_* flags.
     53     */
     54    int             props;
     55    /**
     56     * MIME type(s) associated with the codec.
     57     * May be NULL; if not, a NULL-terminated array of MIME types.
     58     * The first item is always non-NULL and is the preferred MIME type.
     59     */
     60    const char *const *mime_types;
     61    /**
     62     * If non-NULL, an array of profiles recognized for this codec.
     63     * Terminated with AV_PROFILE_UNKNOWN.
     64     */
     65    const struct AVProfile *profiles;
     66 } AVCodecDescriptor;
     67 
     68 /**
     69 * Codec uses only intra compression.
     70 * Video and audio codecs only.
     71 */
     72 #define AV_CODEC_PROP_INTRA_ONLY    (1 << 0)
     73 /**
     74 * Codec supports lossy compression. Audio and video codecs only.
     75 * @note a codec may support both lossy and lossless
     76 * compression modes
     77 */
     78 #define AV_CODEC_PROP_LOSSY         (1 << 1)
     79 /**
     80 * Codec supports lossless compression. Audio and video codecs only.
     81 */
     82 #define AV_CODEC_PROP_LOSSLESS      (1 << 2)
     83 /**
     84 * Codec supports frame reordering. That is, the coded order (the order in which
     85 * the encoded packets are output by the encoders / stored / input to the
     86 * decoders) may be different from the presentation order of the corresponding
     87 * frames.
     88 *
     89 * For codecs that do not have this property set, PTS and DTS should always be
     90 * equal.
     91 */
     92 #define AV_CODEC_PROP_REORDER       (1 << 3)
     93 
     94 /**
     95 * Video codec supports separate coding of fields in interlaced frames.
     96 */
     97 #define AV_CODEC_PROP_FIELDS        (1 << 4)
     98 
     99 /**
    100 * Subtitle codec is bitmap based
    101 * Decoded AVSubtitle data can be read from the AVSubtitleRect->pict field.
    102 */
    103 #define AV_CODEC_PROP_BITMAP_SUB    (1 << 16)
    104 /**
    105 * Subtitle codec is text based.
    106 * Decoded AVSubtitle data can be read from the AVSubtitleRect->ass field.
    107 */
    108 #define AV_CODEC_PROP_TEXT_SUB      (1 << 17)
    109 
    110 /**
    111 * @return descriptor for given codec ID or NULL if no descriptor exists.
    112 */
    113 const AVCodecDescriptor *avcodec_descriptor_get(enum AVCodecID id);
    114 
    115 /**
    116 * Iterate over all codec descriptors known to libavcodec.
    117 *
    118 * @param prev previous descriptor. NULL to get the first descriptor.
    119 *
    120 * @return next descriptor or NULL after the last descriptor
    121 */
    122 const AVCodecDescriptor *avcodec_descriptor_next(const AVCodecDescriptor *prev);
    123 
    124 /**
    125 * @return codec descriptor with the given name or NULL if no such descriptor
    126 *         exists.
    127 */
    128 const AVCodecDescriptor *avcodec_descriptor_get_by_name(const char *name);
    129 
    130 /**
    131 * @}
    132 */
    133 
    134 #endif // AVCODEC_CODEC_DESC_H