From: Stéphane Loeuillet Date: Sat, 8 Jan 2005 12:25:26 +0000 (+0000) Subject: ext/dv/gstdvdec.c: remove unneeded comment from dvdec (related to DV 4CC codes in... X-Git-Tag: 1.19.3~511^2~13293 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8bc3ca91060f6dc4bf0b32d9e509ede24cb0a17a;p=platform%2Fupstream%2Fgstreamer.git ext/dv/gstdvdec.c: remove unneeded comment from dvdec (related to DV 4CC codes in AVI files) moved them in gstreamer/... Original commit message from CVS: * ext/dv/gstdvdec.c: remove unneeded comment from dvdec (related to DV 4CC codes in AVI files) moved them in gstreamer/docs/random/mimetypes * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_ext_content_desc): don't send text tags if they are empty fix mem leak on error path * gst/ffmpegcolorspace/avcodec.h: * gst/ffmpegcolorspace/gstffmpegcodecmap.c: (gst_ffmpeg_pixfmt_to_caps), (gst_ffmpeg_caps_to_pixfmt), (gst_ffmpegcsp_avpicture_fill): * gst/ffmpegcolorspace/imgconvert.c: (img_get_alpha_info): * gst/ffmpegcolorspace/imgconvert_template.h: adds BGR32 and BGRA32 to ffmpegcolorspace (still bad colors, fixing it on next commit) helps with dvdec outputing BGR32 --- diff --git a/ChangeLog b/ChangeLog index 72fd386..135614e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,26 @@ 2005-01-08 Stephane LOEUILLET * ext/dv/gstdvdec.c: + remove unneeded comment from dvdec + (related to DV 4CC codes in AVI files) + moved them in gstreamer/docs/random/mimetypes + * gst/asfdemux/gstasfdemux.c: + (gst_asf_demux_process_ext_content_desc): + don't send text tags if they are empty + fix mem leak on error path + * gst/ffmpegcolorspace/avcodec.h: + * gst/ffmpegcolorspace/gstffmpegcodecmap.c: + (gst_ffmpeg_pixfmt_to_caps), (gst_ffmpeg_caps_to_pixfmt), + (gst_ffmpegcsp_avpicture_fill): + * gst/ffmpegcolorspace/imgconvert.c: (img_get_alpha_info): + * gst/ffmpegcolorspace/imgconvert_template.h: + adds BGR32 and BGRA32 to ffmpegcolorspace + (still bad colors, fixing it on next commit) + helps with dvdec outputing BGR32 + +2005-01-08 Stephane LOEUILLET + + * ext/dv/gstdvdec.c: Fix audio caps i just broke (missing ',') * gst/matroska/matroska-mux.c: (gst_matroska_mux_get_type), (gst_matroska_mux_reset): diff --git a/gst/ffmpegcolorspace/avcodec.h b/gst/ffmpegcolorspace/avcodec.h index 6cd8964..c6066df 100644 --- a/gst/ffmpegcolorspace/avcodec.h +++ b/gst/ffmpegcolorspace/avcodec.h @@ -59,7 +59,9 @@ enum PixelFormat { PIX_FMT_YUV422P, ///< Planar YUV 4:2:2 (1 Cr & Cb sample per 2x1 Y samples) PIX_FMT_YUV444P, ///< Planar YUV 4:4:4 (1 Cr & Cb sample per 1x1 Y samples) PIX_FMT_RGBA32, ///< Packed pixel, 4 bytes per pixel, BGRABGRA..., stored in cpu endianness + PIX_FMT_BGRA32, ///< Packed pixel, 4 bytes per pixel, ARGBARGB... PIX_FMT_RGB32, ///< Packed pixel, 4 bytes per pixel, BGRXBGRX..., stored in cpu endianness + PIX_FMT_BGR32, ///< Packed pixel, 4 bytes per pixel, XRGBXRGB... PIX_FMT_YUV410P, ///< Planar YUV 4:1:0 (1 Cr & Cb sample per 4x4 Y samples) PIX_FMT_YUV411P, ///< Planar YUV 4:1:1 (1 Cr & Cb sample per 4x1 Y samples) PIX_FMT_RGB565, ///< always stored in cpu endianness diff --git a/gst/ffmpegcolorspace/gstffmpegcodecmap.c b/gst/ffmpegcolorspace/gstffmpegcodecmap.c index dc6abdd..84909cf 100644 --- a/gst/ffmpegcolorspace/gstffmpegcodecmap.c +++ b/gst/ffmpegcolorspace/gstffmpegcodecmap.c @@ -161,6 +161,20 @@ gst_ffmpeg_pixfmt_to_caps (enum PixelFormat pix_fmt, AVCodecContext * context) b_mask = 0xff000000; #endif break; + case PIX_FMT_BGR32: + bpp = 32; + depth = 24; + endianness = G_BIG_ENDIAN; +#if (G_BYTE_ORDER == G_BIG_ENDIAN) + r_mask = 0x0000ff00; + g_mask = 0x00ff0000; + b_mask = 0xff000000; +#else + r_mask = 0x00ff0000; + g_mask = 0x0000ff00; + b_mask = 0x000000ff; +#endif + break; case PIX_FMT_RGBA32: bpp = 32; depth = 32; @@ -177,6 +191,22 @@ gst_ffmpeg_pixfmt_to_caps (enum PixelFormat pix_fmt, AVCodecContext * context) a_mask = 0x000000ff; #endif break; + case PIX_FMT_BGRA32: + bpp = 32; + depth = 32; + endianness = G_BIG_ENDIAN; +#if (G_BYTE_ORDER == G_BIG_ENDIAN) + r_mask = 0xff000000; + g_mask = 0x00ff0000; + b_mask = 0x0000ff00; + a_mask = 0x000000ff; +#else + r_mask = 0x000000ff; + g_mask = 0x0000ff00; + b_mask = 0x00ff0000; + a_mask = 0xff000000; +#endif + break; case PIX_FMT_YUV410P: fmt = GST_MAKE_FOURCC ('Y', 'U', 'V', '9'); break; @@ -468,6 +498,13 @@ gst_ffmpeg_caps_to_pixfmt (const GstCaps * caps, if (rmask == 0x0000ff00) #endif context->pix_fmt = PIX_FMT_RGB32; + +#if (G_BYTE_ORDER == G_BIG_ENDIAN) + if (rmask == 0x0000ff00) +#else + if (rmask == 0x00ff0000) +#endif + context->pix_fmt = PIX_FMT_BGR32; } break; case 24: @@ -585,6 +622,8 @@ gst_ffmpegcsp_avpicture_fill (AVPicture * picture, case PIX_FMT_AYUV4444: case PIX_FMT_RGB32: case PIX_FMT_RGBA32: + case PIX_FMT_BGR32: + case PIX_FMT_BGRA32: stride = width * 4; size = stride * height; picture->data[0] = ptr; diff --git a/gst/ffmpegcolorspace/imgconvert.c b/gst/ffmpegcolorspace/imgconvert.c index 8aea77f..0dea17f 100644 --- a/gst/ffmpegcolorspace/imgconvert.c +++ b/gst/ffmpegcolorspace/imgconvert.c @@ -189,6 +189,17 @@ static PixFmtInfo pix_fmt_info[PIX_FMT_NB] = { /* .y_chroma_shift = */ 0, /* .depth = */ 8, }, + /* [PIX_FMT_BGR32] = */ { + /* .format = */ PIX_FMT_BGR32, + /* .name = */ "bgr32", + /* .nb_channels = */ 4, + /* .color_type = */ FF_COLOR_RGB, + /* .pixel_type = */ FF_PIXEL_PACKED, + /* .is_alpha = */ 0, + /* .x_chroma_shift = */ 0, + /* .y_chroma_shift = */ 0, + /* .depth = */ 8, + }, /* [PIX_FMT_RGBA32] = */ { /* .format = */ PIX_FMT_RGBA32, /* .name = */ "rgba32", @@ -200,6 +211,17 @@ static PixFmtInfo pix_fmt_info[PIX_FMT_NB] = { /* .y_chroma_shift = */ 0, /* .depth = */ 8, }, + /* [PIX_FMT_BGRA32] = */ { + /* .format = */ PIX_FMT_BGRA32, + /* .name = */ "bgra32", + /* .nb_channels = */ 4, + /* .color_type = */ FF_COLOR_RGB, + /* .pixel_type = */ FF_PIXEL_PACKED, + /* .is_alpha = */ 1, + /* .x_chroma_shift = */ 0, + /* .y_chroma_shift = */ 0, + /* .depth = */ 8, + }, /* [PIX_FMT_RGB565] = */ { /* .format = */ PIX_FMT_RGB565, /* .name = */ "rgb565", @@ -1577,6 +1599,36 @@ bitcopy_n (unsigned int a, int n) #include "imgconvert_template.h" +/* bgr32 handling */ + +#define RGB_NAME bgr32 + +#define RGB_IN(r, g, b, s)\ +{\ + unsigned int v = ((const uint32_t *)(s))[0];\ + r = (v >> 8) & 0xff;\ + g = (v >> 16) & 0xff;\ + b = (v >> 24) & 0xff;\ +} + +#define RGBA_IN(r, g, b, a, s)\ +{\ + unsigned int v = ((const uint32_t *)(s))[0];\ + a = 0xff;\ + r = (v >> 8) & 0xff;\ + g = (v >> 16) & 0xff;\ + b = (v >> 24) & 0xff;\ +} + +#define RGBA_OUT(d, r, g, b, a)\ +{\ + ((uint32_t *)(d))[0] = a | (r << 8) | (g << 16) | (b << 24);\ +} + +#define BPP 4 + +#include "imgconvert_template.h" + /* rgba32 handling */ #define RGB_NAME rgba32 @@ -1608,6 +1660,36 @@ bitcopy_n (unsigned int a, int n) #include "imgconvert_template.h" +/* bgra32 handling */ + +#define RGB_NAME bgra32 + +#define RGB_IN(r, g, b, s)\ +{\ + unsigned int v = ((const uint32_t *)(s))[0];\ + r = (v >> 8) & 0xff;\ + g = (v >> 16) & 0xff;\ + b = (v >> 24) & 0xff;\ +} + +#define RGBA_IN(r, g, b, a, s)\ +{\ + unsigned int v = ((const uint32_t *)(s))[0];\ + a = v & 0xff;\ + r = (v >> 8) & 0xff;\ + g = (v >> 16) & 0xff;\ + b = (v >> 24) & 0xff;\ +} + +#define RGBA_OUT(d, r, g, b, a)\ +{\ + ((uint32_t *)(d))[0] = a | (r << 8) | (g << 16) | (b << 24 );\ +} + +#define BPP 4 + +#include "imgconvert_template.h" + static void mono_to_gray (AVPicture * dst, const AVPicture * src, int width, int height, int xor_mask) @@ -1755,7 +1837,9 @@ static ConvertEntry convert_table[] = { {PIX_FMT_YUV420P, PIX_FMT_BGR24, yuv420p_to_bgr24}, {PIX_FMT_YUV420P, PIX_FMT_RGB24, yuv420p_to_rgb24}, {PIX_FMT_YUV420P, PIX_FMT_RGB32, yuv420p_to_rgb32}, + {PIX_FMT_YUV420P, PIX_FMT_BGR32, yuv420p_to_bgr32}, {PIX_FMT_YUV420P, PIX_FMT_RGBA32, yuv420p_to_rgba32}, + {PIX_FMT_YUV420P, PIX_FMT_BGRA32, yuv420p_to_bgra32}, {PIX_FMT_YUV422P, PIX_FMT_YUV422, yuv422p_to_yuv422}, {PIX_FMT_YUV422P, PIX_FMT_UYVY422, yuv422p_to_uyvy422}, @@ -1767,24 +1851,26 @@ static ConvertEntry convert_table[] = { {PIX_FMT_YUVJ420P, PIX_FMT_BGR24, yuvj420p_to_bgr24}, {PIX_FMT_YUVJ420P, PIX_FMT_RGB24, yuvj420p_to_rgb24}, {PIX_FMT_YUVJ420P, PIX_FMT_RGB32, yuvj420p_to_rgb32}, + {PIX_FMT_YUVJ420P, PIX_FMT_BGR32, yuvj420p_to_bgr32}, {PIX_FMT_YUVJ420P, PIX_FMT_RGBA32, yuvj420p_to_rgba32}, + {PIX_FMT_YUVJ420P, PIX_FMT_BGRA32, yuvj420p_to_bgra32}, {PIX_FMT_YUVJ444P, PIX_FMT_RGB24, yuvj444p_to_rgb24}, {PIX_FMT_YUV422, PIX_FMT_YUV420P, yuv422_to_yuv420p}, - {PIX_FMT_YUV422, PIX_FMT_YUV422P, yuv422_to_yuv422p}, {PIX_FMT_UYVY422, PIX_FMT_YUV420P, uyvy422_to_yuv420p}, - {PIX_FMT_UYVY422, PIX_FMT_YUV422P, uyvy422_to_yuv422p}, {PIX_FMT_RGB24, PIX_FMT_YUV420P, rgb24_to_yuv420p}, {PIX_FMT_RGB24, PIX_FMT_RGB565, rgb24_to_rgb565}, {PIX_FMT_RGB24, PIX_FMT_RGB555, rgb24_to_rgb555}, {PIX_FMT_RGB24, PIX_FMT_RGB32, rgb24_to_rgb32}, + {PIX_FMT_RGB24, PIX_FMT_BGR32, rgb24_to_bgr32}, {PIX_FMT_RGB24, PIX_FMT_RGBA32, rgb24_to_rgba32}, {PIX_FMT_RGB24, PIX_FMT_BGR24, rgb24_to_bgr24}, + {PIX_FMT_RGB24, PIX_FMT_BGRA32, rgb24_to_bgra32}, {PIX_FMT_RGB24, PIX_FMT_GRAY8, rgb24_to_gray}, {PIX_FMT_RGB24, PIX_FMT_PAL8, rgb24_to_pal8}, {PIX_FMT_RGB24, PIX_FMT_YUV444P, rgb24_to_yuv444p}, @@ -1798,6 +1884,8 @@ static ConvertEntry convert_table[] = { {PIX_FMT_RGB32, PIX_FMT_YUV420P, rgb32_to_yuv420p}, {PIX_FMT_RGB32, PIX_FMT_GRAY8, rgb32_to_gray}, + {PIX_FMT_RGBA32, PIX_FMT_BGRA32, rgba32_to_bgra32}, + {PIX_FMT_RGBA32, PIX_FMT_BGR32, rgba32_to_bgr32}, {PIX_FMT_RGBA32, PIX_FMT_RGB24, rgba32_to_rgb24}, {PIX_FMT_RGBA32, PIX_FMT_RGB555, rgba32_to_rgb555}, {PIX_FMT_RGBA32, PIX_FMT_PAL8, rgba32_to_pal8}, @@ -1809,6 +1897,16 @@ static ConvertEntry convert_table[] = { {PIX_FMT_BGR24, PIX_FMT_YUV420P, bgr24_to_yuv420p}, {PIX_FMT_BGR24, PIX_FMT_GRAY8, bgr24_to_gray}, + {PIX_FMT_BGR32, PIX_FMT_RGB24, bgr32_to_rgb24}, + {PIX_FMT_BGR32, PIX_FMT_RGBA32, bgr32_to_rgba32}, + {PIX_FMT_BGR32, PIX_FMT_YUV420P, bgr32_to_yuv420p}, + {PIX_FMT_BGR32, PIX_FMT_GRAY8, bgr32_to_gray}, + + {PIX_FMT_BGRA32, PIX_FMT_RGB24, bgra32_to_rgb24}, + {PIX_FMT_BGRA32, PIX_FMT_RGBA32, bgra32_to_rgba32}, + {PIX_FMT_BGRA32, PIX_FMT_YUV420P, bgra32_to_yuv420p}, + {PIX_FMT_BGRA32, PIX_FMT_GRAY8, bgra32_to_gray}, + {PIX_FMT_RGB555, PIX_FMT_RGB24, rgb555_to_rgb24}, {PIX_FMT_RGB555, PIX_FMT_RGB32, rgb555_to_rgba32}, {PIX_FMT_RGB555, PIX_FMT_RGBA32, rgb555_to_rgba32}, @@ -1824,7 +1922,9 @@ static ConvertEntry convert_table[] = { {PIX_FMT_GRAY8, PIX_FMT_RGB24, gray_to_rgb24}, {PIX_FMT_GRAY8, PIX_FMT_BGR24, gray_to_bgr24}, {PIX_FMT_GRAY8, PIX_FMT_RGB32, gray_to_rgb32}, + {PIX_FMT_GRAY8, PIX_FMT_BGR32, gray_to_bgr32}, {PIX_FMT_GRAY8, PIX_FMT_RGBA32, gray_to_rgba32}, + {PIX_FMT_GRAY8, PIX_FMT_BGRA32, gray_to_bgra32}, {PIX_FMT_GRAY8, PIX_FMT_MONOWHITE, gray_to_monowhite}, {PIX_FMT_GRAY8, PIX_FMT_MONOBLACK, gray_to_monoblack}, @@ -1837,7 +1937,9 @@ static ConvertEntry convert_table[] = { {PIX_FMT_PAL8, PIX_FMT_BGR24, pal8_to_bgr24}, {PIX_FMT_PAL8, PIX_FMT_RGB24, pal8_to_rgb24}, {PIX_FMT_PAL8, PIX_FMT_RGB32, pal8_to_rgb32}, + {PIX_FMT_PAL8, PIX_FMT_BGR32, pal8_to_bgr32}, {PIX_FMT_PAL8, PIX_FMT_RGBA32, pal8_to_rgba32}, + {PIX_FMT_PAL8, PIX_FMT_BGRA32, pal8_to_bgra32}, {PIX_FMT_UYVY411, PIX_FMT_YUV411P, uyvy411_to_yuv411p}, @@ -2167,9 +2269,15 @@ img_get_alpha_info (const AVPicture * src, int pix_fmt, int width, int height) case PIX_FMT_RGB32: ret = get_alpha_info_rgb32 (src, width, height); break; + case PIX_FMT_BGR32: + ret = get_alpha_info_bgr32 (src, width, height); + break; case PIX_FMT_RGBA32: ret = get_alpha_info_rgba32 (src, width, height); break; + case PIX_FMT_BGRA32: + ret = get_alpha_info_bgra32 (src, width, height); + break; case PIX_FMT_RGB555: ret = get_alpha_info_rgb555 (src, width, height); break; diff --git a/gst/ffmpegcolorspace/imgconvert_template.h b/gst/ffmpegcolorspace/imgconvert_template.h index 364a158..976d275 100644 --- a/gst/ffmpegcolorspace/imgconvert_template.h +++ b/gst/ffmpegcolorspace/imgconvert_template.h @@ -468,6 +468,9 @@ static void glue(RGB_NAME, _to_rgba32)(AVPicture *dst, const AVPicture *src, } } +#if !defined(rgba32_fcts_done) +#define rgba32_fcts_done + static void ayuv4444_to_rgba32(AVPicture *dst, const AVPicture *src, int width, int height) { @@ -522,7 +525,9 @@ static void rgba32_to_ayuv4444(AVPicture *dst, const AVPicture *src, } } -#endif /* !defined(FMT_RGBA32) && defined(RGBA_IN) */ +#endif /* !defined(rgba32_fcts_done) */ + +#endif /* !defined(FMT_RGBA32) && defined(RGBA_OUT) */ #ifndef FMT_RGB24