libavutil: add planar sample formats and av_sample_fmt_is_planar()

This commit is contained in:
Justin Ruggles 2011-11-12 15:58:40 -05:00
parent aa38cff2c6
commit 8889cc4f5b
4 changed files with 37 additions and 6 deletions

View File

@ -13,6 +13,9 @@ libavutil: 2011-04-18
API changes, most recent first: API changes, most recent first:
2011-xx-xx - xxxxxxx - lavu 51.17.0
Add planar sample formats and av_sample_fmt_is_planar() to samplefmt.h.
2011-xx-xx - xxxxxxx - lavc 53.21.0 2011-xx-xx - xxxxxxx - lavc 53.21.0
Move some AVCodecContext fields to a new private struct, AVCodecInternal, Move some AVCodecContext fields to a new private struct, AVCodecInternal,
which is accessed from a new field, AVCodecContext.internal. which is accessed from a new field, AVCodecContext.internal.

View File

@ -153,7 +153,7 @@
*/ */
#define LIBAVUTIL_VERSION_MAJOR 51 #define LIBAVUTIL_VERSION_MAJOR 51
#define LIBAVUTIL_VERSION_MINOR 16 #define LIBAVUTIL_VERSION_MINOR 17
#define LIBAVUTIL_VERSION_MICRO 0 #define LIBAVUTIL_VERSION_MICRO 0
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \

View File

@ -25,15 +25,21 @@
typedef struct SampleFmtInfo { typedef struct SampleFmtInfo {
const char *name; const char *name;
int bits; int bits;
int planar;
} SampleFmtInfo; } SampleFmtInfo;
/** this table gives more information about formats */ /** this table gives more information about formats */
static const SampleFmtInfo sample_fmt_info[AV_SAMPLE_FMT_NB] = { static const SampleFmtInfo sample_fmt_info[AV_SAMPLE_FMT_NB] = {
[AV_SAMPLE_FMT_U8] = { .name = "u8", .bits = 8 }, [AV_SAMPLE_FMT_U8] = { .name = "u8", .bits = 8, .planar = 0 },
[AV_SAMPLE_FMT_S16] = { .name = "s16", .bits = 16 }, [AV_SAMPLE_FMT_S16] = { .name = "s16", .bits = 16, .planar = 0 },
[AV_SAMPLE_FMT_S32] = { .name = "s32", .bits = 32 }, [AV_SAMPLE_FMT_S32] = { .name = "s32", .bits = 32, .planar = 0 },
[AV_SAMPLE_FMT_FLT] = { .name = "flt", .bits = 32 }, [AV_SAMPLE_FMT_FLT] = { .name = "flt", .bits = 32, .planar = 0 },
[AV_SAMPLE_FMT_DBL] = { .name = "dbl", .bits = 64 }, [AV_SAMPLE_FMT_DBL] = { .name = "dbl", .bits = 64, .planar = 0 },
[AV_SAMPLE_FMT_U8P] = { .name = "u8p", .bits = 8, .planar = 1 },
[AV_SAMPLE_FMT_S16P] = { .name = "s16p", .bits = 16, .planar = 1 },
[AV_SAMPLE_FMT_S32P] = { .name = "s32p", .bits = 32, .planar = 1 },
[AV_SAMPLE_FMT_FLTP] = { .name = "fltp", .bits = 32, .planar = 1 },
[AV_SAMPLE_FMT_DBLP] = { .name = "dblp", .bits = 64, .planar = 1 },
}; };
const char *av_get_sample_fmt_name(enum AVSampleFormat sample_fmt) const char *av_get_sample_fmt_name(enum AVSampleFormat sample_fmt)
@ -79,3 +85,10 @@ int av_get_bits_per_sample_fmt(enum AVSampleFormat sample_fmt)
0 : sample_fmt_info[sample_fmt].bits; 0 : sample_fmt_info[sample_fmt].bits;
} }
#endif #endif
int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt)
{
if (sample_fmt < 0 || sample_fmt >= AV_SAMPLE_FMT_NB)
return 0;
return sample_fmt_info[sample_fmt].planar;
}

View File

@ -31,6 +31,13 @@ enum AVSampleFormat {
AV_SAMPLE_FMT_S32, ///< signed 32 bits AV_SAMPLE_FMT_S32, ///< signed 32 bits
AV_SAMPLE_FMT_FLT, ///< float AV_SAMPLE_FMT_FLT, ///< float
AV_SAMPLE_FMT_DBL, ///< double AV_SAMPLE_FMT_DBL, ///< double
AV_SAMPLE_FMT_U8P, ///< unsigned 8 bits, planar
AV_SAMPLE_FMT_S16P, ///< signed 16 bits, planar
AV_SAMPLE_FMT_S32P, ///< signed 32 bits, planar
AV_SAMPLE_FMT_FLTP, ///< float, planar
AV_SAMPLE_FMT_DBLP, ///< double, planar
AV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically AV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically
}; };
@ -77,4 +84,12 @@ int av_get_bits_per_sample_fmt(enum AVSampleFormat sample_fmt);
*/ */
int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt); int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt);
/**
* Check if the sample format is planar.
*
* @param sample_fmt the sample format to inspect
* @return 1 if the sample format is planar, 0 if it is interleaved
*/
int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt);
#endif /* AVUTIL_SAMPLEFMT_H */ #endif /* AVUTIL_SAMPLEFMT_H */