mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avcodec.h: split AVCodecDescriptor API into its own header
This commit is contained in:
parent
c6978418b8
commit
672946c7fe
@ -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"
|
||||||
|
|
||||||
|
128
libavcodec/codec_desc.h
Normal file
128
libavcodec/codec_desc.h
Normal file
@ -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
Block a user