Blame view

3rdparty/ffmpeg-4.4.4/libavcodec/codec_desc.h 3.76 KB
09c2d08c   Hu Chunming   arm交付版
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
  /*
   * Codec descriptors public API
   *
   * This file is part of FFmpeg.
   *
   * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
   * FFmpeg is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
  #ifndef AVCODEC_CODEC_DESC_H
  #define AVCODEC_CODEC_DESC_H
  
  #include "libavutil/avutil.h"
  
  #include "codec_id.h"
  
  /**
   * @addtogroup lavc_core
   * @{
   */
  
  /**
   * This struct describes the properties of a single codec described by an
   * AVCodecID.
   * @see avcodec_descriptor_get()
   */
  typedef struct AVCodecDescriptor {
      enum AVCodecID     id;
      enum AVMediaType type;
      /**
       * Name of the codec described by this descriptor. It is non-empty and
       * unique for each codec descriptor. It should contain alphanumeric
       * characters and '_' only.
       */
      const char      *name;
      /**
       * A more descriptive name for this codec. May be NULL.
       */
      const char *long_name;
      /**
       * Codec properties, a combination of AV_CODEC_PROP_* flags.
       */
      int             props;
      /**
       * MIME type(s) associated with the codec.
       * May be NULL; if not, a NULL-terminated array of MIME types.
       * The first item is always non-NULL and is the preferred MIME type.
       */
      const char *const *mime_types;
      /**
       * If non-NULL, an array of profiles recognized for this codec.
       * Terminated with FF_PROFILE_UNKNOWN.
       */
      const struct AVProfile *profiles;
  } AVCodecDescriptor;
  
  /**
   * Codec uses only intra compression.
   * Video and audio codecs only.
   */
  #define AV_CODEC_PROP_INTRA_ONLY    (1 << 0)
  /**
   * Codec supports lossy compression. Audio and video codecs only.
   * @note a codec may support both lossy and lossless
   * compression modes
   */
  #define AV_CODEC_PROP_LOSSY         (1 << 1)
  /**
   * Codec supports lossless compression. Audio and video codecs only.
   */
  #define AV_CODEC_PROP_LOSSLESS      (1 << 2)
  /**
   * Codec supports frame reordering. That is, the coded order (the order in which
   * the encoded packets are output by the encoders / stored / input to the
   * decoders) may be different from the presentation order of the corresponding
   * frames.
   *
   * For codecs that do not have this property set, PTS and DTS should always be
   * equal.
   */
  #define AV_CODEC_PROP_REORDER       (1 << 3)
  /**
   * Subtitle codec is bitmap based
   * Decoded AVSubtitle data can be read from the AVSubtitleRect->pict field.
   */
  #define AV_CODEC_PROP_BITMAP_SUB    (1 << 16)
  /**
   * Subtitle codec is text based.
   * Decoded AVSubtitle data can be read from the AVSubtitleRect->ass field.
   */
  #define AV_CODEC_PROP_TEXT_SUB      (1 << 17)
  
  /**
   * @return descriptor for given codec ID or NULL if no descriptor exists.
   */
  const AVCodecDescriptor *avcodec_descriptor_get(enum AVCodecID id);
  
  /**
   * Iterate over all codec descriptors known to libavcodec.
   *
   * @param prev previous descriptor. NULL to get the first descriptor.
   *
   * @return next descriptor or NULL after the last descriptor
   */
  const AVCodecDescriptor *avcodec_descriptor_next(const AVCodecDescriptor *prev);
  
  /**
   * @return codec descriptor with the given name or NULL if no such descriptor
   *         exists.
   */
  const AVCodecDescriptor *avcodec_descriptor_get_by_name(const char *name);
  
  /**
   * @}
   */
  
  #endif // AVCODEC_CODEC_DESC_H