#include "avcodec.h"
#include "dsputil.h"
#include "internal.h"
+#include "libavutil/avassert.h"
#include "libavutil/colorspace.h"
#include "libavutil/common.h"
#include "libavutil/pixdesc.h"
[AV_PIX_FMT_YUVA444P] = {
.color_type = FF_COLOR_YUV,
},
+ [AV_PIX_FMT_YUVA420P9LE] = {
+ .color_type = FF_COLOR_YUV,
+ },
+ [AV_PIX_FMT_YUVA422P9LE] = {
+ .color_type = FF_COLOR_YUV,
+ },
+ [AV_PIX_FMT_YUVA444P9LE] = {
+ .color_type = FF_COLOR_YUV,
+ },
+ [AV_PIX_FMT_YUVA420P9BE] = {
+ .color_type = FF_COLOR_YUV,
+ },
+ [AV_PIX_FMT_YUVA422P9BE] = {
+ .color_type = FF_COLOR_YUV,
+ },
+ [AV_PIX_FMT_YUVA444P9BE] = {
+ .color_type = FF_COLOR_YUV,
+ },
+ [AV_PIX_FMT_YUVA420P10LE] = {
+ .color_type = FF_COLOR_YUV,
+ },
+ [AV_PIX_FMT_YUVA422P10LE] = {
+ .color_type = FF_COLOR_YUV,
+ },
+ [AV_PIX_FMT_YUVA444P10LE] = {
+ .color_type = FF_COLOR_YUV,
+ },
+ [AV_PIX_FMT_YUVA420P10BE] = {
+ .color_type = FF_COLOR_YUV,
+ },
+ [AV_PIX_FMT_YUVA422P10BE] = {
+ .color_type = FF_COLOR_YUV,
+ },
+ [AV_PIX_FMT_YUVA444P10BE] = {
+ .color_type = FF_COLOR_YUV,
+ },
/* JPEG YUV */
[AV_PIX_FMT_YUVJ420P] = {
void avcodec_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift)
{
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
+ av_assert0(desc);
*h_shift = desc->log2_chroma_w;
*v_shift = desc->log2_chroma_h;
}
-int ff_is_hwaccel_pix_fmt(enum AVPixelFormat pix_fmt)
-{
- const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
- return desc->flags & PIX_FMT_HWACCEL;
-}
-
-int avpicture_fill(AVPicture *picture, uint8_t *ptr,
- enum AVPixelFormat pix_fmt, int width, int height)
-{
- return av_image_fill_arrays(picture->data, picture->linesize,
- ptr, pix_fmt, width, height, 1);
-}
-
-int avpicture_layout(const AVPicture* src, enum AVPixelFormat pix_fmt, int width, int height,
- unsigned char *dest, int dest_size)
-{
- return av_image_copy_to_buffer(dest, dest_size,
- (const uint8_t * const*)src->data, src->linesize,
- pix_fmt, width, height, 1);
-}
-
-int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height)
-{
- return av_image_get_buffer_size(pix_fmt, width, height, 1);
-}
-
static int get_pix_fmt_depth(int *min, int *max, enum AVPixelFormat pix_fmt)
{
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
return best;
}
-void av_picture_copy(AVPicture *dst, const AVPicture *src,
- enum AVPixelFormat pix_fmt, int width, int height)
-{
- av_image_copy(dst->data, dst->linesize, (const uint8_t **)src->data,
- src->linesize, pix_fmt, width, height);
-}
-
/* 2x2 -> 1x1 */
void ff_shrink22(uint8_t *dst, int dst_wrap,
const uint8_t *src, int src_wrap,
}
}
-
-int avpicture_alloc(AVPicture *picture,
- enum AVPixelFormat pix_fmt, int width, int height)
-{
- int ret;
-
- if ((ret = av_image_alloc(picture->data, picture->linesize, width, height, pix_fmt, 1)) < 0) {
- memset(picture, 0, sizeof(AVPicture));
- return ret;
- }
-
- return 0;
-}
-
-void avpicture_free(AVPicture *picture)
-{
- av_free(picture->data[0]);
-}
-
/* return true if yuv planar */
static inline int is_yuv_planar(enum AVPixelFormat fmt)
{
- const PixFmtInfo *info = &pix_fmt_info[fmt];
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(fmt);
int i;
int planes[4] = { 0 };
- if (info->color_type != FF_COLOR_YUV &&
- info->color_type != FF_COLOR_YUV_JPEG)
+ if ( desc->flags & PIX_FMT_RGB
+ || !(desc->flags & PIX_FMT_PLANAR))
return 0;
/* set the used planes */
emms_c();
return 0;
}
+
+#ifdef TEST
+
+int main(void){
+ int i;
+ for (i=0; i<AV_PIX_FMT_NB*2; i++) {
+ AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(i);
+ if(!desc)
+ continue;
+ av_log(0, AV_LOG_INFO, "pix fmt %s %d\n", desc->name, is_yuv_planar(i));
+ }
+ return 0;
+}
+
+#endif