summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2012-06-06 09:56:14 +0000
committerNanang Izzuddin <nanang@teluu.com>2012-06-06 09:56:14 +0000
commita971e71cca70d743d6a9268e6fed82179bae1ed6 (patch)
tree34eac29a7c0854bc617c42b993565e9ba4a1e995
parent3377b974f347ef86dfcba3dd299f3751c9a88c69 (diff)
Fix #1528:
- fixed video format YV12 (was YUV planar 16bpp, should be YVU planar 12bpp) - added I422 (YUV planar 16bpp, was defined as YV12) - updated colorbar video device to support YV12. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4158 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjmedia/include/pjmedia/format.h13
-rw-r--r--pjmedia/src/pjmedia-videodev/colorbar_dev.c9
-rw-r--r--pjmedia/src/pjmedia/ffmpeg_util.c3
-rw-r--r--pjmedia/src/pjmedia/format.c3
4 files changed, 23 insertions, 5 deletions
diff --git a/pjmedia/include/pjmedia/format.h b/pjmedia/include/pjmedia/format.h
index c3206d86..9230551f 100644
--- a/pjmedia/include/pjmedia/format.h
+++ b/pjmedia/include/pjmedia/format.h
@@ -169,11 +169,22 @@ typedef enum pjmedia_format_id
PJMEDIA_FORMAT_IYUV = PJMEDIA_FORMAT_I420,
/**
- * This is planar 4:2:2/16bpp YUV format.
+ * This is planar 4:2:0/12bpp YUV format, similar to I420 or IYUV but
+ * the U (Cb) and V (Cr) planes order is switched, i.e: the second plane
+ * contains the V (Cb) samples and the third plane contains the V (Cr)
+ * samples.
*/
PJMEDIA_FORMAT_YV12 = PJMEDIA_FORMAT_PACK('Y', 'V', '1', '2'),
/**
+ * This is planar 4:2:2/16bpp YUV format, the data can be treated as
+ * three planes of color components, where the first plane contains
+ * only the Y samples, the second plane contains only the U (Cb) samples,
+ * and the third plane contains only the V (Cr) sample.
+ */
+ PJMEDIA_FORMAT_I422 = PJMEDIA_FORMAT_PACK('I', '4', '2', '2'),
+
+ /**
* The JPEG version of planar 4:2:0/12bpp YUV format.
*/
PJMEDIA_FORMAT_I420JPEG = PJMEDIA_FORMAT_PACK('J', '4', '2', '0'),
diff --git a/pjmedia/src/pjmedia-videodev/colorbar_dev.c b/pjmedia/src/pjmedia-videodev/colorbar_dev.c
index 11acf6cb..699c8d11 100644
--- a/pjmedia/src/pjmedia-videodev/colorbar_dev.c
+++ b/pjmedia/src/pjmedia-videodev/colorbar_dev.c
@@ -76,6 +76,7 @@ static struct cbar_fmt_info cbar_fmts[] =
/* Planar formats */
{ PJMEDIA_FORMAT_YV12 },
{ PJMEDIA_FORMAT_I420 },
+ { PJMEDIA_FORMAT_I422 },
{ PJMEDIA_FORMAT_I420JPEG },
{ PJMEDIA_FORMAT_I422JPEG },
};
@@ -354,8 +355,12 @@ static void fill_first_line(pj_uint8_t *first_lines[],
if (vfi->color_model == PJMEDIA_COLOR_MODEL_RGB)
c = rgb_colors[i][j];
- else
- c = yuv_colors[i][j];
+ else {
+ if (vfi->id == PJMEDIA_FORMAT_YV12 && j > 0)
+ c = yuv_colors[i][3-j];
+ else
+ c = yuv_colors[i][j];
+ }
bar_width = vafp->strides[j]/8;
p = first_lines[j] + bar_width*i;
diff --git a/pjmedia/src/pjmedia/ffmpeg_util.c b/pjmedia/src/pjmedia/ffmpeg_util.c
index 43d67c31..fa65b7b4 100644
--- a/pjmedia/src/pjmedia/ffmpeg_util.c
+++ b/pjmedia/src/pjmedia/ffmpeg_util.c
@@ -52,7 +52,8 @@ static const struct ffmpeg_fmt_table_t
{ PJMEDIA_FORMAT_YUY2, PIX_FMT_YUYV422},
{ PJMEDIA_FORMAT_UYVY, PIX_FMT_UYVY422},
{ PJMEDIA_FORMAT_I420, PIX_FMT_YUV420P},
- { PJMEDIA_FORMAT_YV12, PIX_FMT_YUV422P},
+ //{ PJMEDIA_FORMAT_YV12, PIX_FMT_YUV420P},
+ { PJMEDIA_FORMAT_I422, PIX_FMT_YUV422P},
{ PJMEDIA_FORMAT_I420JPEG, PIX_FMT_YUVJ420P},
{ PJMEDIA_FORMAT_I422JPEG, PIX_FMT_YUVJ422P},
};
diff --git a/pjmedia/src/pjmedia/format.c b/pjmedia/src/pjmedia/format.c
index 49369c0b..7c2bb310 100644
--- a/pjmedia/src/pjmedia/format.c
+++ b/pjmedia/src/pjmedia/format.c
@@ -105,7 +105,8 @@ static pjmedia_video_format_info built_in_vid_fmt_info[] =
{PJMEDIA_FORMAT_UYVY, "UYVY", PJMEDIA_COLOR_MODEL_YUV, 16, 1, &apply_packed_fmt},
{PJMEDIA_FORMAT_YVYU, "YVYU", PJMEDIA_COLOR_MODEL_YUV, 16, 1, &apply_packed_fmt},
{PJMEDIA_FORMAT_I420, "I420", PJMEDIA_COLOR_MODEL_YUV, 12, 3, &apply_planar_420},
- {PJMEDIA_FORMAT_YV12, "YV12", PJMEDIA_COLOR_MODEL_YUV, 16, 3, &apply_planar_422},
+ {PJMEDIA_FORMAT_YV12, "YV12", PJMEDIA_COLOR_MODEL_YUV, 12, 3, &apply_planar_420},
+ {PJMEDIA_FORMAT_I422, "I422", PJMEDIA_COLOR_MODEL_YUV, 16, 3, &apply_planar_422},
{PJMEDIA_FORMAT_I420JPEG, "I420JPG", PJMEDIA_COLOR_MODEL_YUV, 12, 3, &apply_planar_420},
{PJMEDIA_FORMAT_I422JPEG, "I422JPG", PJMEDIA_COLOR_MODEL_YUV, 16, 3, &apply_planar_422},
};