#include "native_metadata_fixture.cpp"
#include "../native/nvinferserver_rfdetr/pose_metadata.hpp"
extern "C" int attach_pose_fixture(uintptr_t pointer,bool populated,unsigned seq) {
    auto* batch=nvds_create_batch_meta(1);
    if(!batch)return 1;
    auto* frame=nvds_acquire_frame_meta_from_pool(batch);
    frame->frame_num=seq;frame->buf_pts=seq*100000000ULL;
    frame->source_frame_width=1280;frame->source_frame_height=720;
    contextra::publishFrameDimensions(*frame,640,360);
    nvds_add_frame_meta_to_batch(batch,frame);
    if(!contextra::publishCompletion(batch,frame,7,populated ? 1 : 0,640,360))return 3;
    auto* meta=gst_buffer_add_nvds_meta(reinterpret_cast<GstBuffer*>(pointer),batch,nullptr,
                                      nvds_batch_meta_copy_func,nvds_batch_meta_release_func);
    if(!meta){nvds_destroy_batch_meta(batch);return 4;}
    meta->meta_type=NVDS_BATCH_GST_META;
    contextra::PoseDetection p{};
    p.score=.9;p.box={{.1,.1,.3,.3}};
    for(auto& k:p.joints)k={{.2,.2,.8}};
    return contextra::publishPose(batch,frame,7,populated ? std::vector<contextra::PoseDetection>{p} : std::vector<contextra::PoseDetection>{}) ? 0 : 2;
}
