const YCbCrFormat &ycbcr_format,
unsigned width, unsigned height);
+ virtual std::string effect_type_id() const { return "YCbCrInput"; }
+
// Create the texture itself. We cannot do this in the constructor,
// because we don't necessarily know all the settings (sRGB texture,
// mipmap generation) at that point.
// Uploads the texture if it has changed since last time.
void set_gl_state(GLuint glsl_program_num, const std::string& prefix, unsigned *sampler_num);
+ unsigned get_width() const { return width; }
+ unsigned get_height() const { return height; }
ColorSpace get_color_space() const { return image_format.color_space; }
GammaCurve get_gamma_curve() const { return image_format.gamma_curve; }
needs_update = true;
}
- const unsigned char *get_pixel_data(unsigned channel) const
- {
- assert(channel >= 0 && channel < 3);
- return pixel_data[channel];
- }
-
void set_pitch(unsigned channel, unsigned pitch) {
- assert(!finalized);
- assert(channel >= 0 && channel < 3);
- this->pitch[channel] = pitch;
- }
-
- unsigned get_pitch(unsigned channel) {
assert(channel >= 0 && channel < 3);
- return pitch[channel];
+ if (this->pitch[channel] != pitch) {
+ this->pitch[channel] = pitch;
+ needs_pbo_recreate = true;
+ }
}
private:
ImageFormat image_format;
YCbCrFormat ycbcr_format;
GLuint pbos[3], texture_num[3];
- bool needs_update, finalized;
+ bool needs_update, needs_pbo_recreate, finalized;
int needs_mipmaps;