mirror of https://github.com/FFmpeg/FFmpeg.git
parent
c6978418b8
commit
672946c7fe
4 changed files with 134 additions and 93 deletions
@ -0,0 +1,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
|
Loading…
Reference in new issue