]> git.sesse.net Git - nageru/blobdiff - nageru/quicksync_encoder.cpp
Collapse all the 10-bit flags.
[nageru] / nageru / quicksync_encoder.cpp
index 19565ad506263112aae7768ef169c0b059fbc127..d0ca914e2901b031cc8f56899a4ed81eb1a78bd1 100644 (file)
@@ -719,6 +719,9 @@ void QuickSyncEncoderImpl::enable_zerocopy_if_possible()
        } else if (global_flags.x264_video_to_http) {
                fprintf(stderr, "Disabling zerocopy H.264 encoding due to --http-x264-video.\n");
                use_zerocopy = false;
+       } else if (global_flags.av1_video_to_http) {
+               fprintf(stderr, "Disabling zerocopy H.264 encoding due to --http-av1-video.\n");
+               use_zerocopy = false;
        } else if (!global_flags.v4l_output_device.empty()) {
                fprintf(stderr, "Disabling zerocopy H.264 encoding due to --v4l-output.\n");
                use_zerocopy = false;
@@ -903,7 +906,7 @@ int QuickSyncEncoderImpl::setup_encode()
                        gl_surfaces[i].y_tex = resource_pool->create_2d_texture(GL_R8, 1, 1);
                        gl_surfaces[i].cbcr_tex = resource_pool->create_2d_texture(GL_RG8, 1, 1);
                } else {
-                       size_t bytes_per_pixel = (global_flags.x264_bit_depth > 8) ? 2 : 1;
+                       size_t bytes_per_pixel = (global_flags.bit_depth > 8) ? 2 : 1;
 
                        // Generate a PBO to read into. It doesn't necessarily fit 1:1 with the VA-API
                        // buffers, due to potentially differing pitch.
@@ -1342,7 +1345,8 @@ void QuickSyncEncoderImpl::save_codeddata(GLSurface *surf, storage_task task)
                        file_mux->add_packet(pkt, task.pts + global_delay(), task.dts + global_delay());
                }
                if (!global_flags.uncompressed_video_to_http &&
-                   !global_flags.x264_video_to_http) {
+                   !global_flags.x264_video_to_http &&
+                   !global_flags.av1_video_to_http) {
                        stream_mux->add_packet(pkt, task.pts + global_delay(), task.dts + global_delay());
                }
        }
@@ -1450,6 +1454,8 @@ QuickSyncEncoderImpl::QuickSyncEncoderImpl(const std::string &filename, Resource
        if (global_flags.x264_video_to_http || global_flags.x264_video_to_disk) {
                assert(http_encoder != nullptr);
                assert(disk_encoder != nullptr);
+       } else if (global_flags.av1_video_to_http) {
+               assert(http_encoder != nullptr);
        } else {
                assert(http_encoder == nullptr);
                assert(disk_encoder == nullptr);
@@ -1627,7 +1633,7 @@ RefCountedGLsync QuickSyncEncoderImpl::end_frame()
        assert(!is_shutdown);
 
        if (!use_zerocopy) {
-               GLenum type = global_flags.x264_bit_depth > 8 ? GL_UNSIGNED_SHORT : GL_UNSIGNED_BYTE;
+               GLenum type = global_flags.bit_depth > 8 ? GL_UNSIGNED_SHORT : GL_UNSIGNED_BYTE;
                GLSurface *surf;
                {
                        lock_guard<mutex> lock(storage_task_queue_mutex);
@@ -1911,10 +1917,9 @@ void QuickSyncEncoderImpl::pass_frame(QuickSyncEncoderImpl::PendingFrame frame,
        uint8_t *data = reinterpret_cast<uint8_t *>(surf->y_ptr);
        if (global_flags.uncompressed_video_to_http) {
                add_packet_for_uncompressed_frame(pts, duration, data);
-       } else if (global_flags.x264_video_to_http || global_flags.x264_video_to_disk) {
+       } else if (http_encoder != nullptr) {
                http_encoder->add_frame(pts, duration, frame.ycbcr_coefficients, data, received_ts);
-       }
-       if (global_flags.x264_separate_disk_encode) {
+       } if (disk_encoder != nullptr && disk_encoder != http_encoder) {
                disk_encoder->add_frame(pts, duration, frame.ycbcr_coefficients, data, received_ts);
        }