[Bug 747216] applemedia: implement GstAppleCoreVideoMemory
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Mon Jul 13 06:35:31 PDT 2015
https://bugzilla.gnome.org/show_bug.cgi?id=747216
--- Comment #30 from Ilya Konstantinov <ilya.konstantinov at gmail.com> ---
(In reply to Nicolas Dufresne (stormer) from comment #29)
> + gst_apple_core_video_memory_init ();
I'd have a look at how other allocators work. I copied it from GstGLMemory
which, I understand, is not the most shining example of how to do things.
> + GST_APPLE_CORE_VIDEO_MEMORY_LOCKED_READONLY,
> + GST_APPLE_CORE_VIDEO_MEMORY_LOCKED_READ_WRITE
> +} GstAppleCoreVideoLockState;
>
> Isn't this duplicating GstLockFlags ?
As comment 12 explains, locking is per-whole-CVPixelBuffer while individual
Gst*Memory objects are per-plane.
e.g.
1. Plane 1 mmap -> lock the whole CVPixelBuffer
2. Plane 2 mmap -> CVPixelBuffer already locked
3. Plane 1 unmap -> shouldn't unlock CVPixelBuffer yet
4. Plane 2 unmap -> unlock CVPixelBuffer
Therefore, I must remember, per-whole-CVPixelBuffer, whether it's locked and
how.
> @@ +53,3 @@
> + * or for reading and writing, as reflected in @lock_state. */
> + guint lock_count;
> +} GstAppleCoreVideoPixelBuffer;
>
> Why not implementing a GstMiniObject, which already handle the this locking ?
If GstMiniObject maps cleanly to what I'm doing here, then sure, why not.
> @@ +60,3 @@
> + * Indicates a non-planar pixel buffer.
> + */
> +#define GST_APPLE_CORE_VIDEO_NO_PLANE ((size_t)-1)
>
> non-planar and NO_PLANE does not fully sound the same to me, can we use a
> better name ? (I could propose GST_APPLE_CORE_VIDEO_HAS_ONE_PLANE)
It is passed as an argument when a plane is expected, i.e.
gst_apple_core_video_memory_new_wrapped (gpixbuf,
GST_APPLE_CORE_VIDEO_NO_PLANE, size))
It's like:
Q - Excuse me, what plane are you passing me? 1st? 2nd?
A - I'm passing you a special plane -- a "no-plane".
Also, ..._HAS_ONE_PLANE != non-planar.
> @@ +75,3 @@
> + GstAppleCoreVideoPixelBuffer *gpixbuf;
> + size_t plane;
> +} GstAppleCoreVideoMemory;
>
> In fact, I don't understand why this double wrapping.
Because Gst*Memory is per-plane, see comment 12.
--
You are receiving this mail because:
You are the QA Contact for the bug.
More information about the gstreamer-bugs
mailing list