X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=ycbcr_input.h;h=d0e71e277e27a235e759027e3a39b06e4990354c;hp=6f4b66d437b1e5cc140e0fa10264bbc24115f6f2;hb=f216b7bef5a968c89f6fc78e83cc26a91e504a8a;hpb=84412c6d89fbe3563bab0b151274eb56c2ddd35c diff --git a/ycbcr_input.h b/ycbcr_input.h index 6f4b66d..d0e71e2 100644 --- a/ycbcr_input.h +++ b/ycbcr_input.h @@ -79,7 +79,35 @@ public: void invalidate_pixel_data(); - void set_pitch(unsigned channel, unsigned pitch) { + // Note: Sets pitch to width, so even if your pitch is unchanged, + // you will need to re-set it after this call. + void set_width(unsigned width) + { + assert(width != 0); + this->width = width; + + assert(width % ycbcr_format.chroma_subsampling_x == 0); + pitch[0] = widths[0] = width; + pitch[1] = widths[1] = width / ycbcr_format.chroma_subsampling_x; + pitch[2] = widths[2] = width / ycbcr_format.chroma_subsampling_x; + invalidate_pixel_data(); + } + + void set_height(unsigned height) + { + assert(height != 0); + this->height = height; + + assert(height % ycbcr_format.chroma_subsampling_y == 0); + heights[0] = height; + heights[1] = height / ycbcr_format.chroma_subsampling_y; + heights[2] = height / ycbcr_format.chroma_subsampling_y; + invalidate_pixel_data(); + } + + void set_pitch(unsigned channel, unsigned pitch) + { + assert(pitch != 0); assert(channel >= 0 && channel < num_channels); this->pitch[channel] = pitch; invalidate_pixel_data();