X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Fpbo_frame_allocator.h;h=cff50aa6310036fe320f2f2021c9b445ec7e7a75;hb=a0e57ec99e9dfdd7e79bcf21e8c996dc43b6cb49;hp=5ea0ffee8f43f72a0abc4b0dcf3be01d8e998112;hpb=afd3391c734ec861d2be4f543e596ad98d6b557e;p=nageru diff --git a/nageru/pbo_frame_allocator.h b/nageru/pbo_frame_allocator.h index 5ea0ffe..cff50aa 100644 --- a/nageru/pbo_frame_allocator.h +++ b/nageru/pbo_frame_allocator.h @@ -4,14 +4,19 @@ #include #include #include +#include +#include #include #include +#include #include +#include #include #include "bmusb/bmusb.h" #include "mjpeg_encoder.h" +#include "shared/va_resource_pool.h" class MJPEGEncoder; @@ -89,8 +94,8 @@ public: // from there into VA-API buffers (by MJPEGEncoder) if needed. enum { FROM_MALLOC, FROM_VA_API } data_copy_current_src; uint8_t *data_copy_malloc; - MJPEGEncoder::VAResources va_resources; - MJPEGEncoder::ReleaseVAResources va_resources_release; + VAResourcePool::VAResources va_resources; + ReleaseVAResources va_resources_release; int generation; }; @@ -114,6 +119,12 @@ private: GLenum permissions; GLenum map_bits; int generation = 0; // Under freelist_mutex. + + struct LingeringGeneration { + std::unique_ptr userdata; + size_t num_frames_left; + }; + std::map lingering_generations; }; #endif // !defined(_PBO_FRAME_ALLOCATOR)