]> git.sesse.net Git - nageru/blobdiff - futatabi/video_stream.cpp
Fix a 1280x720 hardcoding, replacing it by another one.
[nageru] / futatabi / video_stream.cpp
index 6fb8c5c400589a93fc811823421b499c12a8b7cf..87e843ae1e8d61ea7bdd8ae5e9c6822fe304e22b 100644 (file)
@@ -238,7 +238,12 @@ VideoStream::~VideoStream() {}
 void VideoStream::start()
 {
        AVFormatContext *avctx = avformat_alloc_context();
-       avctx->oformat = av_guess_format("nut", nullptr, nullptr);
+
+       // We use Matroska, because it's pretty much the only mux where FFmpeg
+       // allows writing chroma location to override JFIF's default center placement.
+       // (Note that at the time of writing, however, FFmpeg does not correctly
+       // _read_ this information!)
+       avctx->oformat = av_guess_format("matroska", nullptr, nullptr);
 
        uint8_t *buf = (uint8_t *)av_malloc(MUX_BUFFER_SIZE);
        avctx->pb = avio_alloc_context(buf, MUX_BUFFER_SIZE, 1, this, nullptr, nullptr, nullptr);
@@ -442,7 +447,7 @@ void VideoStream::schedule_interpolated_frame(steady_clock::time_point local_pts
                shared_ptr<Frame> frame2 = decode_jpeg_with_cache(secondary_frame, DECODE_IF_NOT_IN_CACHE, &frame_reader, &did_decode);
 
                // Then fade against it, putting it into the fade Y' and CbCr textures.
-               ycbcr_semiplanar_converter->prepare_chain_for_fade_from_texture(qf.output_tex, frame2, fade_alpha)->render_to_fbo(resources->fade_fbo, 1280, 720);
+               ycbcr_semiplanar_converter->prepare_chain_for_fade_from_texture(qf.output_tex, 1280, 720, frame2, fade_alpha)->render_to_fbo(resources->fade_fbo, 1280, 720);
 
                // Subsample and split Cb/Cr.
                chroma_subsampler->subsample_chroma(resources->fade_cbcr_output_tex, 1280, 720, resources->cb_tex, resources->cr_tex);