@@ -15,7 +15,8 @@ libavutil: 2017-10-21 | |||||
API changes, most recent first: | API changes, most recent first: | ||||
2020-xx-xx - xxxxxxxxxx - lavc 58.78.100 - avcodec.h codec_id.h packet.h | |||||
2020-xx-xx - xxxxxxxxxx - lavc 58.78.100 - avcodec.h codec_desc.h codec_id.h packet.h | |||||
Move AVCodecDesc-related public API to new header codec_desc.h. | |||||
Move AVCodecID enum to new header codec_id.h. | Move AVCodecID enum to new header codec_id.h. | ||||
Move AVPacket-related public API to new header packet.h. | Move AVPacket-related public API to new header packet.h. | ||||
@@ -41,6 +41,7 @@ | |||||
#include "libavutil/pixfmt.h" | #include "libavutil/pixfmt.h" | ||||
#include "libavutil/rational.h" | #include "libavutil/rational.h" | ||||
#include "codec_desc.h" | |||||
#include "codec_id.h" | #include "codec_id.h" | ||||
#include "packet.h" | #include "packet.h" | ||||
#include "version.h" | #include "version.h" | ||||
@@ -200,77 +201,6 @@ | |||||
* @{ | * @{ | ||||
*/ | */ | ||||
/** | |||||
* 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) | |||||
/** | /** | ||||
* @ingroup lavc_decoding | * @ingroup lavc_decoding | ||||
* Required number of additionally allocated bytes at the end of the input bitstream for decoding. | * Required number of additionally allocated bytes at the end of the input bitstream for decoding. | ||||
@@ -5059,26 +4989,6 @@ int av_codec_is_encoder(const AVCodec *codec); | |||||
*/ | */ | ||||
int av_codec_is_decoder(const AVCodec *codec); | int av_codec_is_decoder(const AVCodec *codec); | ||||
/** | |||||
* @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); | |||||
/** | /** | ||||
* Allocate a CPB properties structure and initialize its fields to default | * Allocate a CPB properties structure and initialize its fields to default | ||||
* values. | * values. | ||||
@@ -23,7 +23,9 @@ | |||||
#include "libavutil/common.h" | #include "libavutil/common.h" | ||||
#include "libavutil/internal.h" | #include "libavutil/internal.h" | ||||
#include "avcodec.h" | |||||
#include "codec_id.h" | |||||
#include "codec_desc.h" | |||||
#include "profiles.h" | #include "profiles.h" | ||||
#include "version.h" | #include "version.h" | ||||
@@ -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 |