glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
}
-Interpolate::Interpolate(int width, int height, const OperatingPoint &op, bool split_ycbcr_output)
- : width(width),
- height(height),
- flow_level(op.finest_level),
- op(op),
+Interpolate::Interpolate(const OperatingPoint &op, bool split_ycbcr_output)
+ : flow_level(op.finest_level),
split_ycbcr_output(split_ycbcr_output),
splat(op),
blend(split_ycbcr_output) {
class Interpolate {
public:
- Interpolate(int width, int height, const OperatingPoint &op, bool split_ycbcr_output);
+ Interpolate(const OperatingPoint &op, bool split_ycbcr_output);
// Returns a texture (or two, if split_ycbcr_output is true) that must
// be released with release_texture() after use. image_tex must be a
}
private:
- int width, height, flow_level;
+ int flow_level;
GLuint vertex_vbo, vao;
TexturePool pool;
- const OperatingPoint op;
const bool split_ycbcr_output;
Splat splat;
}
DISComputeFlow compute_flow(width1, height1, op);
GrayscaleConversion gray;
- Interpolate interpolate(width1, height1, op, /*split_ycbcr_output=*/false);
+ Interpolate interpolate(op, /*split_ycbcr_output=*/false);
GLuint tex_gray;
glCreateTextures(GL_TEXTURE_2D_ARRAY, 1, &tex_gray);
check_error();
compute_flow.reset(new DISComputeFlow(width, height, operating_point2));
- interpolate.reset(new Interpolate(width, height, operating_point2, /*split_ycbcr_output=*/true));
+ interpolate.reset(new Interpolate(operating_point2, /*split_ycbcr_output=*/true));
chroma_subsampler.reset(new ChromaSubsampler);
check_error();
}
std::string stream_mux_header;
bool seen_sync_markers = false;
- QSurface *gl_surface;
-
// Effectively only converts from 4:2:2 to 4:4:4.
// TODO: Have a separate version with ResampleEffect, for scaling?
std::unique_ptr<movit::EffectChain> ycbcr_planar_convert_chain;