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, ...@@ -959,6 +959,8 @@ static size_t read_uncompressed_header(VP9D_COMP *pbi,
cm->error_resilient_mode = vp9_rb_read_bit(rb); cm->error_resilient_mode = vp9_rb_read_bit(rb);
if (cm->frame_type == KEY_FRAME) { if (cm->frame_type == KEY_FRAME) {
int csp;
if (vp9_rb_read_literal(rb, 8) != SYNC_CODE_0 || 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_1 ||
vp9_rb_read_literal(rb, 8) != SYNC_CODE_2) { vp9_rb_read_literal(rb, 8) != SYNC_CODE_2) {
...@@ -966,13 +968,24 @@ static size_t read_uncompressed_header(VP9D_COMP *pbi, ...@@ -966,13 +968,24 @@ static size_t read_uncompressed_header(VP9D_COMP *pbi,
"Invalid frame sync code"); "Invalid frame sync code");
} }
vp9_rb_read_literal(rb, 3); // colorspace csp = vp9_rb_read_literal(rb, 3); // colorspace
if (cm->version == 1) { if (csp != 7) { // != sRGB
cm->subsampling_x = vp9_rb_read_bit(rb); vp9_rb_read_bit(rb); // [16,235] (including xvycc) vs [0,255] range
cm->subsampling_y = vp9_rb_read_bit(rb); if (cm->version == 1) {
vp9_rb_read_bit(rb); // has extra plane cm->subsampling_x = vp9_rb_read_bit(rb);
cm->subsampling_y = vp9_rb_read_bit(rb);
vp9_rb_read_bit(rb); // has extra plane
} else {
cm->subsampling_y = cm->subsampling_x = 1;
}
} else { } else {
cm->subsampling_y = cm->subsampling_x = 1; 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); vp9_setup_past_independence(cm, xd);
......
...@@ -1361,12 +1361,21 @@ static void write_uncompressed_header(VP9_COMP *cpi, ...@@ -1361,12 +1361,21 @@ static void write_uncompressed_header(VP9_COMP *cpi,
// 000 - Unknown // 000 - Unknown
// 001 - BT.601 // 001 - BT.601
// 010 - BT.709 // 010 - BT.709
// 011 - xvYCC // 011 - SMPTE-170
// 1xx - Reserved // 100 - SMPTE-240
// 101 - Reserved
// 110 - Reserved
// 111 - sRGB (RGB)
vp9_wb_write_literal(wb, 0, 3); vp9_wb_write_literal(wb, 0, 3);
if (cm->version == 1) { if (1 /* colorspace != sRGB */) {
vp9_wb_write_bit(wb, cm->subsampling_x); vp9_wb_write_bit(wb, 0); // 0: [16, 235] (i.e. xvYCC), 1: [0, 255]
vp9_wb_write_bit(wb, cm->subsampling_y); 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 vp9_wb_write_bit(wb, 0); // has extra plane
} }
......
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