Commit 36f02bf3 authored by Ronald S. Bultje's avatar Ronald S. Bultje
Browse files

Add slightly more colorspace variations.

Change-Id: Ib44541fbbdcf71ec881814bd6715ea1c6bd82cf4
parent 6533ac73
......@@ -959,6 +959,8 @@ static size_t read_uncompressed_header(VP9D_COMP *pbi,
cm->error_resilient_mode = vp9_rb_read_bit(rb);
if (cm->frame_type == KEY_FRAME) {
int csp;
if (vp9_rb_read_literal(rb, 8) != SYNC_CODE_0 ||
vp9_rb_read_literal(rb, 8) != SYNC_CODE_1 ||
vp9_rb_read_literal(rb, 8) != SYNC_CODE_2) {
......@@ -966,7 +968,9 @@ static size_t read_uncompressed_header(VP9D_COMP *pbi,
"Invalid frame sync code");
}
vp9_rb_read_literal(rb, 3); // colorspace
csp = vp9_rb_read_literal(rb, 3); // colorspace
if (csp != 7) { // != sRGB
vp9_rb_read_bit(rb); // [16,235] (including xvycc) vs [0,255] range
if (cm->version == 1) {
cm->subsampling_x = vp9_rb_read_bit(rb);
cm->subsampling_y = vp9_rb_read_bit(rb);
......@@ -974,6 +978,15 @@ static size_t read_uncompressed_header(VP9D_COMP *pbi,
} else {
cm->subsampling_y = cm->subsampling_x = 1;
}
} else {
if (cm->version == 1) {
cm->subsampling_y = cm->subsampling_x = 0;
vp9_rb_read_bit(rb); // has extra plane
} else {
vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
"RGB not supported in profile 0");
}
}
vp9_setup_past_independence(cm, xd);
......
......@@ -1361,14 +1361,23 @@ static void write_uncompressed_header(VP9_COMP *cpi,
// 000 - Unknown
// 001 - BT.601
// 010 - BT.709
// 011 - xvYCC
// 1xx - Reserved
// 011 - SMPTE-170
// 100 - SMPTE-240
// 101 - Reserved
// 110 - Reserved
// 111 - sRGB (RGB)
vp9_wb_write_literal(wb, 0, 3);
if (1 /* colorspace != sRGB */) {
vp9_wb_write_bit(wb, 0); // 0: [16, 235] (i.e. xvYCC), 1: [0, 255]
if (cm->version == 1) {
vp9_wb_write_bit(wb, cm->subsampling_x);
vp9_wb_write_bit(wb, cm->subsampling_y);
vp9_wb_write_bit(wb, 0); // has extra plane
}
} else {
assert(cm->version == 1);
vp9_wb_write_bit(wb, 0); // has extra plane
}
// frame size
vp9_wb_write_literal(wb, cm->width, 16);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment