X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=futatabi%2Fvideo_stream.cpp;h=6ee9608816f1940be13c06ba8ca9fc2edacd6afa;hb=1a9150fd8435914eec35a0dbdff3a9a2266d9e97;hp=30d4971dc9ac9fced0d7328ee3c877de48bf2c2b;hpb=ffe2343de3fe982cc52a449b13f01137819ed42d;p=nageru diff --git a/futatabi/video_stream.cpp b/futatabi/video_stream.cpp index 30d4971..6ee9608 100644 --- a/futatabi/video_stream.cpp +++ b/futatabi/video_stream.cpp @@ -208,13 +208,14 @@ VideoStream::VideoStream(AVFormatContext *file_avctx) check_error(); OperatingPoint op; - if (flow_initialized_interpolation_quality == 1) { + if (global_flags.interpolation_quality == 0 || + global_flags.interpolation_quality == 1) { op = operating_point1; - } else if (flow_initialized_interpolation_quality == 2) { + } else if (global_flags.interpolation_quality == 2) { op = operating_point2; - } else if (flow_initialized_interpolation_quality == 3) { + } else if (global_flags.interpolation_quality == 3) { op = operating_point3; - } else if (flow_initialized_interpolation_quality == 4) { + } else if (global_flags.interpolation_quality == 4) { op = operating_point4; } else { // Quality 0 will be changed to 1 in flags.cpp. @@ -592,6 +593,7 @@ void VideoStream::encode_thread_func() pkt.stream_index = 0; pkt.data = (uint8_t *)jpeg.data(); pkt.size = jpeg.size(); + pkt.flags = AV_PKT_FLAG_KEY; mux->add_packet(pkt, qf.output_pts, qf.output_pts); last_frame.assign(&jpeg[0], &jpeg[0] + jpeg.size()); @@ -608,6 +610,7 @@ void VideoStream::encode_thread_func() pkt.stream_index = 0; pkt.data = (uint8_t *)jpeg.data(); pkt.size = jpeg.size(); + pkt.flags = AV_PKT_FLAG_KEY; mux->add_packet(pkt, qf.output_pts, qf.output_pts); last_frame = move(jpeg); } else if (qf.type == QueuedFrame::INTERPOLATED || qf.type == QueuedFrame::FADED_INTERPOLATED) { @@ -632,6 +635,7 @@ void VideoStream::encode_thread_func() pkt.stream_index = 0; pkt.data = (uint8_t *)jpeg.data(); pkt.size = jpeg.size(); + pkt.flags = AV_PKT_FLAG_KEY; mux->add_packet(pkt, qf.output_pts, qf.output_pts); last_frame = move(jpeg); } else if (qf.type == QueuedFrame::REFRESH) { @@ -640,6 +644,7 @@ void VideoStream::encode_thread_func() pkt.stream_index = 0; pkt.data = (uint8_t *)last_frame.data(); pkt.size = last_frame.size(); + pkt.flags = AV_PKT_FLAG_KEY; mux->add_packet(pkt, qf.output_pts, qf.output_pts); } else { assert(false);