typename async_result<T>::iterator &async_result<T>::iterator::operator ++() { ensure_data(); if (m_state == data_at_end) { throw_error(-ENOENT, "async_result::iterator::operator ++(): end iterator"); } m_state = data_waiting; ensure_data(); return *this; }
typename async_result<T>::iterator async_result<T>::iterator::operator ++(int) { ensure_data(); iterator tmp = *this; ++(*this); return tmp; }
GstMemory * gst_msdk_system_memory_new (GstAllocator * base_allocator) { GstMsdkSystemAllocator *allocator; GstVideoInfo *vip; GstMsdkSystemMemory *mem; g_return_val_if_fail (base_allocator, NULL); g_return_val_if_fail (GST_IS_MSDK_SYSTEM_ALLOCATOR (base_allocator), NULL); allocator = GST_MSDK_SYSTEM_ALLOCATOR_CAST (base_allocator); mem = g_slice_new0 (GstMsdkSystemMemory); if (!mem) return NULL; mem->surface = gst_msdk_system_allocator_create_surface (base_allocator); vip = &allocator->image_info; gst_memory_init (&mem->parent_instance, GST_MEMORY_FLAG_NO_SHARE, base_allocator, NULL, GST_VIDEO_INFO_SIZE (vip), 0, 0, GST_VIDEO_INFO_SIZE (vip)); if (!ensure_data (mem)) return NULL; return GST_MEMORY_CAST (mem); }
T *async_result<T>::iterator::operator ->() const { ensure_data(); if (m_state == data_at_end) { throw_error(-ENOENT, "async_result::iterator::operator ->(): end iterator"); } return &m_result; }
static gpointer _vdp_video_mem_map (GstVdpVideoMemory * vmem, gsize maxsize, GstMapFlags flags) { GST_DEBUG ("surface:%d, maxsize:%" G_GSIZE_FORMAT ", flags:%d", vmem->surface, maxsize, flags); if (!ensure_data (vmem)) return NULL; return vmem->cache; }
explicit ReaderFile(gvl::source source) : data(0), pos(0) { len = 0; auto cur = source; while (cur && cur->ensure_data() == gvl::source_result::ok) { len += cur->data->size(); cur = cur->next; } data = (uint8_t*)malloc(len); uint8_t* p = data; cur = source; while (cur && cur->data) { std::memcpy(p, cur->data->begin(), cur->data->size()); p += cur->data->size(); cur = cur->next; } }
gboolean gst_vdp_video_memory_map (GstVideoMeta * meta, guint plane, GstMapInfo * info, gpointer * data, gint * stride, GstMapFlags flags) { GstBuffer *buffer = meta->buffer; GstVdpVideoMemory *vmem = (GstVdpVideoMemory *) gst_buffer_get_memory (buffer, 0); /* Only handle GstVdpVideoMemory */ g_return_val_if_fail (((GstMemory *) vmem)->allocator == _vdp_video_allocator, FALSE); GST_DEBUG ("plane:%d", plane); /* download if not already done */ if (!ensure_data (vmem)) return FALSE; *data = vmem->cached_data[plane]; *stride = vmem->destination_pitches[plane]; return TRUE; }
bool async_result<T>::iterator::at_end() const { ensure_data(); return m_state == data_at_end; }