X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=ycbcr_input.h;fp=ycbcr_input.h;h=3aed51b3b19a90d9e0b0e03e6cfdc16fcfab726f;hp=6f4b66d437b1e5cc140e0fa10264bbc24115f6f2;hb=3cb6aa45faa156fcb380aeacc13b03743bc471ec;hpb=974b5c837c24179f9ab29f4ffdcdd1172288172b diff --git a/ycbcr_input.h b/ycbcr_input.h index 6f4b66d..3aed51b 100644 --- a/ycbcr_input.h +++ b/ycbcr_input.h @@ -79,7 +79,32 @@ 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) + { + 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) + { + 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(channel >= 0 && channel < num_channels); this->pitch[channel] = pitch; invalidate_pixel_data();