tor-browser

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

codec_desc.h (3863B)


      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