lavc: add codec descriptors.

They describe properties that are inherent to a codec (as described by
an AVCodecID) without referring to a specific implementation.
This commit is contained in:
Anton Khirnov 2012-08-05 15:18:00 +02:00
parent 2ff67c909c
commit c223d79945
3 changed files with 1913 additions and 0 deletions

View File

@ -16,6 +16,7 @@ OBJS = allcodecs.o \
avpacket.o \
bitstream.o \
bitstream_filter.o \
codec_desc.o \
dsputil.o \
faanidct.o \
fmtconvert.o \

View File

@ -435,6 +435,26 @@ enum AVCodecID {
#define CodecID AVCodecID
#endif
/**
* This struct describes the properties of a single codec described by an
* AVCodecID.
* @see avcodec_get_descriptor()
*/
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;
} AVCodecDescriptor;
#if FF_API_OLD_DECODE_AUDIO
/* in bytes */
#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio
@ -4504,6 +4524,20 @@ int av_codec_is_encoder(AVCodec *codec);
*/
int av_codec_is_decoder(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);
/**
* @}
*/

1878
libavcodec/codec_desc.c Normal file

File diff suppressed because it is too large Load Diff