Youness Alaoui
0552bb1b2a
androidcamera: Fix memleak and lose of buffer if the data queue is flushing
2016-01-21 13:47:03 -05:00
Youness Alaoui
122083eadb
androidcamera: Calling set_preview_callback with NULL frees all the buffers in the queue.
...
We must not do it at the stop otherwise we lose all our buffers. It's best to do
it during the close, so we free up the resources.
2016-01-21 13:47:03 -05:00
Youness Alaoui
acb15e4178
androidcamera: Drop frames if we don't have a clock and var rename
2016-01-21 13:47:02 -05:00
Youness Alaoui
691ab727b0
androicamera: if buffer size increases, then readd new buffers to the queue and drop old ones
...
The on_preview callback gets called with NULL if the buffer in the queue is
too small, so we need to handle the case where the array is NULL. Also
there is a bug in the android source which makes it drop one of the buffers
so if we had 5 buffers, and we renegotiate to a higher resolution, then we'd
only get 4 calls to on_preview_frame with NULL, with one being dropped.
This means we can't reallocate the buffers in the if (data == NULL) case
because we might end up with 0 buffers in the end.
2016-01-21 13:47:02 -05:00
Youness Alaoui
c85df6807d
androidcamera: If callback is NULL then set it to NULL in jni
2016-01-21 13:47:02 -05:00
Nicolas Dufresne
e3ba219494
androidcamera: Fix debug output
2016-01-21 13:46:52 -05:00
Sebastian Dröge
19e5238379
androidcamera: Chose the smallest range that contains the target framerate
2016-01-21 12:44:43 -05:00
Sebastian Dröge
c633ecc3be
androidcamera: Improve negotiation
...
And make sure we set an FPS range from the supported ones
now instead of a potentially unsupported range.
2016-01-21 12:44:42 -05:00
Sebastian Dröge
08db4f267d
androidcamera: Implement LATENCY query
2016-01-21 12:44:42 -05:00
Sebastian Dröge
6cdd4745fe
androidcamera: Make sure we always have a valid camera source instance in the buffer free function
2016-01-21 12:44:42 -05:00
Sebastian Dröge
f43897e839
androidcamera: Make sure to not call any callbacks after stopping the camera
...
Fixes segfaults when rotating the device for example.
2016-01-21 12:44:41 -05:00
Youness Alaoui
1a2bcc769c
androidcamera: Fix timestamping issue
2016-01-21 12:44:41 -05:00
Youness Alaoui
25896c5ab7
androidcamera: Add caps negotiation support
2016-01-21 12:44:41 -05:00
Youness Alaoui
bb83c54a87
Add support for getcaps that probes the camera for capabilities
2016-01-21 12:44:41 -05:00
Youness Alaoui
4856d22b9f
androidmedia: Drop the first buffer to have proper timestamping
2016-01-21 12:44:40 -05:00
Youness Alaoui
0083adbbed
androidmedia: Flush the queue when the source is stopped
2016-01-21 12:44:40 -05:00
Youness Alaoui
dd27b89e95
androidmedia: Allocate/free texture when camera is open/closed
2016-01-21 12:44:40 -05:00
Youness Alaoui
d4717a9639
androidmedia: add a gst_ahc_src_close function
2016-01-21 12:44:39 -05:00
Youness Alaoui
54f3337bd1
androidmedia: Fix small indentation issues
2016-01-21 12:44:39 -05:00
Youness Alaoui
aa390e1be4
androidmedia: Disable plugin if android-sdk isn't found and dynamically search for platform version
2016-01-21 12:44:39 -05:00
Youness Alaoui
e78143f839
androidcamera: Add support for using DexLoader with Embeded GstAhcCallback.jar
2016-01-21 12:44:39 -05:00
Youness Alaoui
d56f094ce6
androidcamera: Fix compilation issues
2016-01-21 12:44:38 -05:00
Youness Alaoui
e42e7317f9
Remove previous cruft and create androidcamera plugin
2016-01-21 12:44:38 -05:00
Youness Alaoui
91219adaf2
Free the buffers and readd the arrays when the queue is cleared
2016-01-21 12:44:38 -05:00
Youness Alaoui
65a6014f26
Add a GST_DVM_CALL macro to ease function calling with exception check
2016-01-21 12:44:37 -05:00
Youness Alaoui
7b8dbd32db
Calculate timestamp at reception of the buffer, not when pushing it out
2016-01-21 12:44:37 -05:00
Youness Alaoui
fff14b255c
Make the number of callback buffers configurable, and delete their local ref
2016-01-21 12:44:37 -05:00
Youness Alaoui
3c78395e31
Use GstDataQueue instead of GAsyncQueue for storing buffers
2016-01-21 12:44:37 -05:00
Youness Alaoui
4cbfe6fa13
Use the buffer's free_func to map byteArray data without making a copy
2016-01-21 12:11:16 -05:00
Youness Alaoui
af47c1ebdc
Remove open failure test code and debug log
2016-01-21 12:11:16 -05:00
Youness Alaoui
666eda11d6
Use YV12 as the default format
2016-01-21 12:11:16 -05:00
Youness Alaoui
7562cc2e26
Add a deinit function and remove jclass references in case of error
2016-01-21 12:11:15 -05:00
Youness Alaoui
37685f09e0
SurfaceTexture constructure needs texture_id
2016-01-21 12:11:15 -05:00
Youness Alaoui
484b0ae658
Add ahcsrc Camera source element prototype
2016-01-21 12:11:15 -05:00
Youness Alaoui
4b975b204c
Add android.hardware.Camera (and deps) JNI wrappers
2016-01-21 12:11:14 -05:00
Youness Alaoui
21f60289db
Adding Dalvik Virtual Machine routines and macros
2016-01-21 12:11:14 -05:00
Youness Alaoui
347dbf123d
androidmedia: Add androidmedia plugin
2016-01-21 12:11:14 -05:00
Alessandro Decina
5c7fb644cd
applemedia: vtenc: fix build on iOS
2016-01-19 19:18:43 +11:00
Alessandro Decina
f6154b4cc0
applemedia: always fill GstBuffers with GstMemory
...
Always fill buffers with our custom memory. The custom memory will avoid
mapping CV/CM buffers unless necessary.
2016-01-19 16:13:04 +11:00
Ilya Konstantinov
8577224c74
applemedia: implement copying of meta
...
Before this, buffers would lose their Core Video / Core Media meta
over intervideo* boundary.
https://bugzilla.gnome.org/show_bug.cgi?id=747216
2016-01-19 13:06:31 +11:00
Ilya Konstantinov
936b2fdfbc
applemedia: implement GstAppleCoreVideoMemory
...
Implement a new memory type wrapping CVPixelBuffer.
There are two immediate advantages:
a) Make the GstMemory itself retain the CVPixelBuffer. Previously,
the containing GstBuffer was solely responsible for the lifetime of
the backing CVPixelBuffer.
With this change, we remove the GST_MEMORY_FLAG_NO_SHARE so that
GstMemory objects be referenced by multiple GstBuffers (doing away
with the need to copy.)
b) Delay locking CVPixelBuffer into CPU memory until it's actually
mapped -- possibly never.
The CVPixelBuffer object is shared among references, shares and
(in planar formats) planes, so a wrapper GstAppleCoreVideoPixelBuffer
structure was introduced to manage locking.
https://bugzilla.gnome.org/show_bug.cgi?id=747216
2016-01-19 12:58:43 +11:00
Alessandro Decina
ed7df2da3c
applemedia: iosurfacememory: alloc with g_new0
...
...since the base class doesn't use g_slice anymore
2016-01-19 12:56:40 +11:00
Matt Crane
eba01f84e5
shmsink: fix possible deadlock in _render()/ _allocator_free()
...
Drop object lock before unrefing memory, otherwise the object
lock might be taken again from the allocator and then things
deadlock.
https://bugzilla.gnome.org/show_bug.cgi?id=760551
2016-01-16 21:46:28 +00:00
Matthew Waters
ffba31b7b2
nvenc: update for recent GL api changes
...
Specifically the GstGLMemoryPBO addition (which was the unadorned GstGLMemory).
2016-01-12 23:36:54 +11:00
Alessandro Decina
05ccc2f6ea
applemedia: avfvideosrc: optionally get the GL context from gst_element_set_context
...
Allow setting the GL context with gst_element_set_context. When available, the
local context obtained via the context query still has the precedence.
2016-01-12 14:36:02 +11:00
Alessandro Decina
45b40b8467
applemedia: iosurfacememory: remove NO_SHARE flag
...
The full memory can be safely shared. Sharing a sub region can't be done and
will fail in the base allocator, triggering a copy.
2016-01-12 14:05:01 +11:00
Alessandro Decina
b0f5d4f1d5
applemedia: avfvideosrc: enable renegotiation
...
We can actually renegotiate now, so remove old check which disabled it.
2016-01-06 16:51:12 +11:00
Alessandro Decina
85df5648bb
applemedia: avfvideosrc: small negotiation fix
...
Fix negotiation when GLMemory is requested but a context is not available
2016-01-06 13:20:17 +11:00
Alessandro Decina
e0d65937bc
applemedia: vtenc: accept UYVY on Mac
...
When doing GLMemory avfvideosrc negotiates UYVY. This change allows avfvideosrc
! tee name=t ! ... ! glimagesink t. ! ... ! gldownload ! vtenc_h264 ! ...
to do GLMemory and 0-copy with the encoder (with the CV meta).
2016-01-06 11:43:37 +11:00
Alessandro Decina
a15d8acff0
applemedia: avfvideosrc: change texture format from BGRA to NV12 on iOS
...
Change texture format from BGRA to NV12. This allows a pipeline like avfvideosrc
! tee name=t ! ... ! glimagesink t. ! ... ! gldownload ! vtenc_h264 ! ... to
negotiate GLMemory. This makes the glimagesink branch much faster (obviously)
and triggers the 0-copy path between avfvideosrc and vtenc (using the CV meta).
Combined this results in a huge perf improvement on iOS (25-30% of CPU time in a
pipeline like the one above).
Note that this doesn't introduce a new shader conversion in the sink, since BGRA
textures had to be copied/converted from format=BGRA,texture-target=RECTANGLE to
format=RGBA,texture-target=2D anyway.
2016-01-06 11:43:37 +11:00