Sebastian Dröge
924795c85c
vtdec: Negotiate the decoder in set_format() already
...
Don't wait until later, we want to know here if the codec can be opened or not
for the requested format. This was removed (accidentially?) by
119e09eac3
Without this decodebin has no way to switch to a different decoder if this one
does not work.
https://bugzilla.gnome.org/show_bug.cgi?id=762613
2016-02-25 11:38:07 +02:00
Joe Gorse
2b63a88f26
avfvideosrc: Frame durations as CTime to the API, not double
...
Newer iOS seems to automatically convert, older iOS/OSX just crashes.
https://bugzilla.gnome.org/show_bug.cgi?id=762575
2016-02-25 11:34:40 +02:00
Matthew Waters
b48049a171
nvenc: release the frames and list when searching for an output buffer
...
Fixes a massive leak in:
videotestsrc ! nvh264enc ! fakesink
2016-02-25 00:07:14 +11:00
Peter Seiderer
df4ef4be39
fbdevsink: fix bytes per pixel calculation
...
Simple pipeline
$ gst-launch-1.0 videotestsrc ! fbdevsink
crashes with SIGSEGV in case the frambuffer xres is smaller
than the virtual xres resolution, e.g.:
$ fbset
mode "800x480-0"
# D: 0.000 MHz, H: 0.000 kHz, V: 0.000 Hz
geometry 800 480 1920 1200 16
timings 0 0 0 0 0 0 0
accel true
rgba 5/11,6/5,5/0,0/0
endmode
Debug:
$ gdb gst-launch-1.0
(gdb) run videotestsrc ! fbdevsink
(gdb) where
#0 0xb6bd2d24 in __memcpy_neon ()
at ../sysdeps/arm/armv7/multiarch/memcpy_impl.S:591
#1 0xb69b04e8 in gst_fbdevsink_show_frame (videosink=0x10a3378,
buf=0xb5c08838) at gstfbdevsink.c:269
#2 0xb69e88c4 in gst_base_sink_do_preroll (sink=sink@entry=0x10a3378,
obj=0xb5c08838, obj@entry=0xa0) at gstbasesink.c:2281
#3 0xb69e92bc in gst_base_sink_do_sync (basesink=basesink@entry=0x10a3378,
obj=0xa0, obj@entry=0xb5c08838, late=0x0, late@entry=0xb6548ba0,
step_end=0x140, step_end@entry=0xb6548ba4) at gstbasesink.c:2500
#4 0xb69ea67c in gst_base_sink_chain_unlocked (
basesink=basesink@entry=0x10a3378, obj=0x0, obj@entry=0xb5c08838,
is_list=is_list@entry=0, pad=<optimized out>) at gstbasesink.c:3486
#5 0xb69ec1c0 in gst_base_sink_chain_main (basesink=0x10a3378,
pad=<optimized out>, obj=0xb5c08838, is_list=0) at gstbasesink.c:3647
#6 0xb6eb5b10 in gst_pad_chain_data_unchecked (pad=0x10a6170,
type=<optimized out>, data=0xb5c08838) at gstpad.c:4086
#7 0xb6eb7a34 in gst_pad_push_data (pad=pad@entry=0x10a6020,
type=type@entry=4112, data=0xb5c08838) at gstpad.c:4338
#8 0xb6ebf344 in gst_pad_push (pad=pad@entry=0x10a6020,
buffer=<optimized out>) at gstpad.c:4454
#9 0xb69f22f0 in gst_base_src_loop (pad=0x10a6020) at gstbasesrc.c:2845
#10 0xb6eeddfc in gst_task_func (task=0x10a8828) at gsttask.c:331
#11 0xb6d485a0 in g_thread_pool_thread_proxy (data=<optimized out>)
at gthreadpoQuit
(gdb) frame 1
#1 0xb69b04e8 in gst_fbdevsink_show_frame (videosink=0x10a3378,
buf=0xb5c08838) at gstfbdevsink.c:269
269 gstfbdevsink.c: No such file or directory.
(gdb) p fbdevsink
$1 = (GstFBDEVSink *) 0x10a3378
(gdb) p *fbdevsink
$2 = {videosink = {element = {element = {object = {object = {
g_type_instance = {g_class = 0x10a2d60}, ref_count = 3,
qdata = 0x0}, lock = {p = 0x0, i = {0, 0}},
name = 0x10a2f30 "fbdevsink0", parent = 0x10a70a0, flags = 32,
control_bindings = 0x0, control_rate = 100000000,
last_sync = 18446744073709551615, _gst_reserved = 0x0},
state_lock = {p = 0x109f9a8, i = {0, 0}}, state_cond = {p = 0x0, i = {
3, 0}}, state_cookie = 2, target_state = GST_STATE_PAUSED,
current_state = GST_STATE_READY, next_state = GST_STATE_PAUSED,
pending_state = GST_STATE_PAUSED,
last_return = GST_STATE_CHANGE_ASYNC, bus = 0x108bcb8, clock = 0x0,
base_time = 0, start_time = 0, numpads = 1, pads = 0x109cc20,
numsrcpads = 0, srcpads = 0x0, numsinkpads = 1, sinkpads = 0x109cc30,
pads_cookie = 1, _gst_reserved = {0x0, 0x0, 0x0, 0x0}},
sinkpad = 0x10a6170, pad_mode = GST_PAD_MODE_PUSH, offset = 0,
can_activate_pull = 0, can_activate_push = 1, preroll_lock = {p = 0x1,
i = {1, 0}}, preroll_cond = {p = 0x0, i = {0, 0}}, eos = 0,
need_preroll = 1, have_preroll = 0, playing_async = 1,
have_newsegment = 1, segment = {flags = GST_SEGMENT_FLAG_NONE, rate = 1,
applied_rate = 1, format = GST_FORMAT_TIME, base = 0, offset = 0,
start = 0, stop = 18446744073709551615, time = 0, position = 33333333,
duration = 18446744073709551615, _gst_reserved = {0x0, 0x0, 0x0,
0x0}}, clock_id = 0x0, sync = 1, flushing = 0, running = 0,
max_lateness = 20000000, priv = 0x10a3188, _gst_reserved = {
0x0 <repeats 20 times>}}, width = 0, height = 0, priv = 0x10a3180,
_gst_reserved = {0x0, 0x0, 0x0, 0x0}}, fixinfo = {
id = '\000' <repeats 15 times>, smem_start = 1078984704,
smem_len = 4608000, type = 0, type_aux = 0, visual = 2, xpanstep = 1,
ypanstep = 1, ywrapstep = 0, line_length = 3840, mmio_start = 0,
mmio_len = 0, accel = 0, capabilities = 0, reserved = {0, 0}}, varinfo = {
xres = 800, yres = 480, xres_virtual = 1920, yres_virtual = 1200,
xoffset = 0, yoffset = 0, bits_per_pixel = 16, grayscale = 0, red = {
offset = 11, length = 5, msb_right = 0}, green = {offset = 5,
length = 6, msb_right = 0}, blue = {offset = 0, length = 5,
msb_right = 0}, transp = {offset = 0, length = 0, msb_right = 0},
nonstd = 0, activate = 0, height = 4294967295, width = 4294967295,
accel_flags = 1, pixclock = 0, left_margin = 0, right_margin = 0,
upper_margin = 0, lower_margin = 0, hsync_len = 0, vsync_len = 0,
sync = 0, vmode = 0, rotate = 0, colorspace = 0, reserved = {0, 0, 0, 0}},
fd = 5,
framebuffer = 0xb654a000 <error: Cannot access memory at address 0xb654a000>, device = 0x10a38d8 "/dev/fb0", width = 320, height = 240, cx = 240, cy = 120,
linelen = 1280, lines = 240, bytespp = 4, fps_n = 30, fps_d = 1}
(gdb) p map
$3 = {memory = 0xb5d24008, flags = GST_MAP_READ,
data = 0xb5d24058 '\377' <repeats 90 times>, "\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\377\a\377\a\377\a\377\a\377\a\377\a\377\a\377\a\377\a"...,
size = 153600, maxsize = 153603, user_data = {0x0,
0xb69e3ba4 <gst_base_sink_set_last_buffer_unlocked+92>, 0x10a3378, 0x0},
_gst_reserved = {0x1, 0x10a3378, 0xb6f50dd8 <_gst_debug_min>, 0xb5c08838}}
(gdb) p i
$4 = 121
Fix this by changing the fbdevsink->bytespp calculation using
the frame buffer xres_virtual size instead of xres.
https://bugzilla.gnome.org/show_bug.cgi?id=762482
2016-02-23 11:36:57 +02:00
Vineeth TM
9900b08512
uvch264_src: Fix caps memory leak
...
v4l_caps and new_caps are being allocated new memory before freeing the
old allocation.
https://bugzilla.gnome.org/show_bug.cgi?id=761108
2016-02-17 08:57:30 +00:00
Vineeth TM
8b80137f4b
acmenc/acmmp3dec: remove unnecessary break after return
...
https://bugzilla.gnome.org/show_bug.cgi?id=761109
2016-02-16 18:03:51 +02:00
Alessandro Decina
4aaaf23868
applemedia: videotesturecache: let CVOpenGLESTextureCache flush every 1s
...
Leave kCVOpenGLESTextureCacheMaximumTextureAgeKey to the default (1s). We used
to set it to 0 and flush manually, but apparently (looking at the GLES profiler)
0 means "disable the cache entirely".
2016-02-10 15:40:02 +11:00
Alessandro Decina
99f29ec56e
applemedia: vtdec: implement GstElement::set_context
2016-02-09 14:13:26 +11:00
Alessandro Decina
915124b363
applemedia: vtdec: update copyright
2016-02-09 14:13:26 +11:00
Alessandro Decina
e34fe9fe70
applemedia: avfvideosrc: implement GstElement::set_context
...
Needed to properly handle gst.gl.app_context(s).
2016-02-09 14:13:26 +11:00
Alessandro Decina
022e060563
applemedia: avfvideosrc: add myself to the copyright holders
2016-02-09 14:13:26 +11:00
Matthew Waters
cd4a93da3b
glsyncmeta: separate out gpu/cpu waits.
...
CPU waits are more expensive and are only required if the CPU is ever going to
access the data. GPU waits perform inter-context synchronisation and are cheaper
as they don't require CPU intervention.
2016-02-09 12:30:25 +11:00
Arun Raghavan
94f1748b6b
tinyalsasink: Use glib CLAMP() instead of our own macro
2016-02-05 21:35:15 +05:30
Arun Raghavan
5f9065c114
tinyalsasink: Limit period size and count to what the h/w permits
2016-02-05 15:56:05 +05:30
Matthew Waters
9efdfb1a29
amcvideodec: pass the correct time value to wait_for_sync
...
When we are not waiting, we need to pass -1 to signal that we just want to check
that the frame was/n't rendered. Avoids waiting for frames that will never be
rendered.
https://bugzilla.gnome.org/show_bug.cgi?id=761014
2016-02-04 15:46:22 +11:00
Matthew Waters
3c29dcaddb
amcvideodec: advance the ready counter ourselves when render=FALSE
...
When not rendering the video frame, e.g. when freeing an unreleased sync frame,
we will not receive a frame listener callback.
Reduces the amount of 'on_frame_available miss detected' messages when dropping
frames.
https://bugzilla.gnome.org/show_bug.cgi?id=761014
2016-02-04 15:46:22 +11:00
Jan Schmidt
0d3cd82749
decklinkaudiosrc: Fix discont tracking
...
Don't reset the marker that's tracking disconts until
either the discont disappears or we resync.
2016-02-04 14:33:09 +11:00
Tim-Philipp Müller
501930dc0d
Remove ancient and dead cdrom control plugin
...
This was never even ported to 0.10, and I don't think
it's particularly useful, since it's just a control
interface really. Let's remove it.
2016-02-03 21:22:28 +00:00
Reynaldo H. Verdejo Pinochet
2da52e79b3
tinyalsasink: fix tinalsa typo
2016-02-02 13:30:29 -08:00
Reynaldo H. Verdejo Pinochet
4c5abcb997
tinyalsasink: fix sample launch line
2016-02-02 11:06:52 -08:00
Arun Raghavan
bb240714fb
tinyalsasink: Use int type if we support a single rate/channel count
...
Avoids using an int range if the field we're setting is not actually a
range.
2016-02-02 16:38:31 +05:30
Arun Raghavan
c8bd74fa9a
tinyalsa: Add a new sink plugin using tinyalsa
...
This uses the tinyalsa library to playback to an ALSA device. Future
work can include using the mmap interface.
https://bugzilla.gnome.org/show_bug.cgi?id=761230
2016-02-02 08:30:59 +05:30
Tim-Philipp Müller
0770fa4ed5
dvbsrc: drop unnecessary use of _stdint.h
2016-01-30 17:35:33 +00:00
Matthew Waters
b276de7827
amcvideodec: guard against not finding a valid frame in loop
...
Fixes sporadic crashes on finishing decoding a video.
https://bugzilla.gnome.org/show_bug.cgi?id=761014
2016-01-29 23:52:15 +11:00
Matthew Waters
1fceac8122
amcvideodec: set our data pointer in java to NULL on close
...
The frame available callback can be called after deconfiguring the amc codec.
Guard against this by setting the back pointer to NULL on close() and ignoring
any NULL data pointer.
https://bugzilla.gnome.org/show_bug.cgi?id=761014
2016-01-29 23:52:15 +11:00
Alessandro Decina
045a935871
applemedia: refactor GL context code
...
Rework the GL context code. Now both avfvideosrc and vtdec can create an
internal GL context for pushing textures. Both elements will still try to
use/switch to a local context where available (including after RECONFIGURE
events).
2016-01-29 15:10:32 +11:00
Alessandro Decina
6f80d5c59a
applemedia: avfvideosrc: actually set the configured framerate
...
Actually set the configured framerate. Before we only used to set the first
matching framerate range. On iOS where the camera reports ranges [2, 60], we
used to configure the camera to output anything between 2 and 60fps.
2016-01-27 14:38:36 +11:00
Sebastian Dröge
c9d9042aff
ahc: Fail gracefully if our callback class can't be found
...
Instead of just ignoring that error and then calling JNI functions with NULL,
which will kill the virtual machine.
The error handling here needs some further improvements though, errors in more
places are just ignored.
2016-01-22 17:25:28 +02:00
Sebastian Dröge
551b0a5f28
ahc: Initialize GError pointer with NULL
...
Otherwise there will be assertions.
2016-01-22 17:22:47 +02:00
Sebastian Dröge
f585a66bd1
amcvideodec: Only free GstAmcBuffer if it's not NULL
...
And also free it on GL errors.
2016-01-22 17:19:29 +02:00
Julien Moutte
3ea431c5b5
decklinkvideosrc: implement RGB capture support
...
Combine mode and format to generate caps and support the flags from VideoChanged callback to support RGB capture.
https://bugzilla.gnome.org/show_bug.cgi?id=760594
2016-01-22 16:11:08 +01:00
Sebastian Dröge
8c57341241
amc: Add an assertion for NULL GErrors
...
Should never happen! But an assertion is better than a NULL pointer
dereference.
2016-01-22 16:22:25 +02:00
Sebastian Dröge
31e1b7ceeb
ahc: Fix indentation
2016-01-22 16:14:46 +02:00
Sebastian Dröge
5a3744e86c
amc: MediaCodec::getOutputBuffer() can return NULL without exception
...
Happens when doing zerocopy rendering, or when passing a wrong index to it.
Handle this properly for zerocopy rendering, fail properly for the other
cases.
https://bugzilla.gnome.org/show_bug.cgi?id=760961
2016-01-22 16:13:45 +02:00
Alessandro Decina
c2a57f3555
applemedia: texture cache: copy the input metas
...
Copy the input metas so avfvideosrc and vtenc can fast path to using
CVPixelBuffer(s) even when using GLMemory.
2016-01-22 13:53:32 +11:00
Nicolas Dufresne
09dbc5b298
ahcsrc: Fix latency reporting
...
Currently it was wrongly reporting min/max as being the shortest and
longest possible frame duration. This is not how latency works in
GStreamer.
Fix by reporting min latency as being the longest possible duration of
one frame. As we don't know how many buffers the stack can accumulate, we
simply assume that max latency is the same (the usual default behaviour).
2016-01-21 13:49:18 -05:00
George Kiagiadakis
9a53d79876
ahcsrc: fix deadlock when flushing
...
_data_queue_item_free() calls gst_buffer_unref(), which
calls gst_ahc_src_buffer_free_func(), which calls
g_mutex_lock() on self->mutex and there you go... deadlock!
2016-01-21 13:49:18 -05:00
Justin Kim
f1809c4d93
ahcsrc: porting from 0.10 to 1.0
2016-01-21 13:49:17 -05:00
Justin Kim
becaf2852d
move androidcamera into androidmedia
...
This commit is a part of portng android hardware camera from 0.10 implementation.
To preserve history and get diff clearly, the interesting files are moved to
deployment directory and the remaining files are removed.
2016-01-21 13:49:17 -05:00
Youness Alaoui
fe288a847b
androidcamera: Separate release and free APIs
2016-01-21 13:49:17 -05:00
Youness Alaoui
c84878ad4b
androidmedia: Fix get_level and get_profile exception checking by not using return
2016-01-21 13:49:17 -05:00
Youness Alaoui
86f2535c41
androidmedia: Add extern gint declarations
2016-01-21 13:49:16 -05:00
Youness Alaoui
11b28224b5
androidcamera: Small refactor in case open doesn't throw an exception but returns null
2016-01-21 13:49:16 -05:00
Sebastian Dröge
acfb1c44a7
androidcamera: Fix some compiler warnings
2016-01-21 13:49:16 -05:00
Sebastian Dröge
64b869ea40
dvm: Rename gst-dvm.[ch] to gstdvm.[ch] for consistency with other GStreamer code
2016-01-21 13:49:15 -05:00
Sebastian Dröge
e3801c041f
androidmedia: Make everything compile with the new wrappers
2016-01-21 13:49:15 -05:00
Sebastian Dröge
ade8590778
androidmedia: Add remaining bits of the Java wrappers using libgstdvm
2016-01-21 13:49:15 -05:00
Sebastian Dröge
ea43e42ca5
androidmedia: Remove g_return_if_fails()
...
This is not public API so it has no advantage to have them here.
2016-01-21 13:49:14 -05:00
Youness Alaoui
3ac90867ac
androidmedia: Use gst-dvm and refactor java wrappers (WIP)
...
Moved the java wrapper API into its own files and made use of the
gst-dvm macros. Also renamed the API to have the proper naming
convention and coding style in order to match the one in androidcamera.
This is a work in progress! "android/media/MediaCodecList" is still missing
and the actual elements have not been ported to use the new function names.
2016-01-21 13:49:14 -05:00
Youness Alaoui
eb949625b9
androidcamera: Add G_BEGIN/END_DECLS to the .h
2016-01-21 13:49:14 -05:00
Youness Alaoui
4a2a73b13f
gst-dvm: Create a gst-dvm library using part of androidcamera
2016-01-21 13:49:10 -05:00
Youness Alaoui
5d90cc85cb
androidcamera: Adding a device-name property
2016-01-21 13:48:45 -05:00
Youness Alaoui
ebbf475437
androidcamera: Add element documentation
2016-01-21 13:48:44 -05:00
Youness Alaoui
178ef6e9b7
androidcamera: Prettify the gstahccallback.c generation line in the makefile
2016-01-21 13:48:44 -05:00
Youness Alaoui
0cc2e86492
androicamera: Make sure the TMP env var exists and check for DEX var too
2016-01-21 13:48:44 -05:00
Youness Alaoui
42ea071c6c
androidcamera: Do not use gst_list_free_full since it requires glib 2.28
2016-01-21 13:48:43 -05:00
Youness Alaoui
832c7adc76
androidcamera: Add smooth-zoom property for smooth zooming feature
2016-01-21 13:48:43 -05:00
Youness Alaoui
9232685782
androidcamera: Add focal-length, view-angle and video-stabilization properties
2016-01-21 13:48:43 -05:00
Youness Alaoui
eea2904e9d
androidcamera: Add video stabilization API
2016-01-21 13:48:43 -05:00
Youness Alaoui
a79beef1c3
androidcamera: Add property probe for the photography properties
2016-01-21 13:48:42 -05:00
Youness Alaoui
f69448ef13
androidcamera: Small refactor
2016-01-21 13:48:42 -05:00
Youness Alaoui
0a8804110f
androidcamera: Fix small memleak
2016-01-21 13:48:42 -05:00
Youness Alaoui
0a2530ef79
androidcamera: Store GParamSpec for properties and use that for the PropertyProbe comparison
2016-01-21 13:48:42 -05:00
Youness Alaoui
dd78e052ae
androidcamera: Handle zoom comparison better, and avoid float precision issue
2016-01-21 13:48:41 -05:00
Youness Alaoui
5975d396e0
androidcamera: Fix EV compensation support
2016-01-21 13:48:41 -05:00
Youness Alaoui
08298ef7f5
androidcamera: Implement new GstPhotography enums
2016-01-21 13:48:41 -05:00
Youness Alaoui
01d6df438d
androidcamera: Do not advertise zoom capabilities if camera doesn't support zoom
2016-01-21 13:48:41 -05:00
Youness Alaoui
39d7729476
androidcamera: Be NULL-safe when a JNI list is returned
2016-01-21 13:48:41 -05:00
Youness Alaoui
dae0337d91
androidcamera: Use strcmp on the GParamSpec property name
...
Use strcmp instead of using the property_id because it's overriden
2016-01-21 13:48:12 -05:00
Youness Alaoui
49a40edae9
androidmedia: Implement property probe for zoom and ev_compensation
2016-01-21 13:48:03 -05:00
Youness Alaoui
1ef65636d1
androidcamera: Add autofocus support
2016-01-21 13:47:53 -05:00
Youness Alaoui
24b29d4266
androidcamera: Override properties
2016-01-21 13:47:52 -05:00
Youness Alaoui
2d45a878b4
anroidcamera: Add support for the GstPhotography interface
2016-01-21 13:47:52 -05:00
Youness Alaoui
77ba73ca7e
androidcamera: Add more wrappers for the Camera.Parameters class
2016-01-21 13:47:52 -05:00
Youness Alaoui
2e745fa1b1
androidcamera: Send proper error when unable to open camera
2016-01-21 13:47:52 -05:00
Youness Alaoui
02f36d92bc
androidcamera: Adding device-orientation and device-facing properties
2016-01-21 13:47:49 -05:00
Youness Alaoui
a08c895303
androidcamera: Add device property and property probe it
2016-01-21 13:47:27 -05:00
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
Alessandro Decina
bf86d7fef1
applemedia: avfvideosrc: output at highest fps/resolution by default
...
Fixate to the highest possible resolution and fps. Otherwise by default we end
up fixating at 2fps and the lowest supported resolution, which is hardly what
someone who bought an overpriced smartphone wants.
2015-12-29 10:57:36 +11:00
Matthew Marsh
0e34c02dd6
nvenc: fix high CPU use on initialization of multiple encoders at the same time
...
We need a static lock to protect various NVENC methods in _set_format(). Without
this the CPU use increases dramatically on initialisation of the element when
there are multiple elements being initialised at the same time.
https://bugzilla.gnome.org/show_bug.cgi?id=759742
2015-12-22 13:27:51 +00:00
Vivia Nikolaidou
fafc8e564c
decklinkvideosink: Made "auto" mode work according to caps
...
When the mode of decklinkvideosink is set to "auto", the sink claims to
support the full set of caps that it can support for all modes. Then, every
time new caps are set, the sink will automatically find the correct mode for
these caps and set it.
Caveat: We have no way to know whether a specific mode will actually work for
your hardware. Therefore, if you try sending 4K video to a 1080 screen, it
will silently fail, we have no way to know that in advance. Manually setting
that mode at least gave the user a way to double-check what they are doing.
https://bugzilla.gnome.org/show_bug.cgi?id=759600
2015-12-18 16:08:02 +01:00
Thomas Roos
f9464ce354
directsoundsrc: add device property as it is done in directsoundsink
...
This allows selection of the device by GUID instead of the name. The name is
user-given and multiple devices can have the same name.
https://bugzilla.gnome.org/show_bug.cgi?id=759484
2015-12-18 12:39:03 +01:00
Sebastian Dröge
d4920948aa
directsoundsrc: Convert header from (some) DOS line endings to UNIX
...
A mix between different line endings in the same file is not a good idea,
and the .c files are both with UNIX line endings so let's use that.
2015-12-18 12:39:03 +01:00
Julien Isorce
89229bcfed
applemedia: set -mmacosx-version-min to 10.8
...
Otherwise qtkitvideosrc fails to build on OSX 10.10.4
because QTKit has been deprecated since OS X 10.9.
Also set -mmacosx-version-min=10.8 in front to allow
the user or cerbero to override the version.
https://bugzilla.gnome.org/show_bug.cgi?id=745564
2015-12-18 10:30:25 +00:00
Alessandro Decina
6961945110
glmemory: add gst_gl_memory_allocator_get_default
...
Add gst_gl_memory_allocator_get_default to get the default allocator based on
the opengl version. Allows us to stop hardcoding the PBO allocator which isn't
supported on gles2.
Fixes GL upload on iOS9 among other things.
2015-12-18 14:25:32 +11:00
Matthew Waters
5dcd500257
gl*memory*: reverse the parameter order of user_data and destroy notify
...
The convention is to have the destroy notify last after any user data
2015-12-17 15:44:22 +11:00
Alessandro Decina
491e2eefcb
applemedia: fix build on iOS
...
Fix build after 779dc3132c
2015-12-17 15:07:33 +11:00
Alessandro Decina
4f550ff50f
applemedia: avfvideosrc: do fixate
2015-12-17 14:49:13 +11:00
Matthew Waters
779dc3132c
glmemorypbo: remove our own alloc()/wrapped()/etc functions
...
replaced by equivalent functionality within gst_gl_base_memory_alloc()
2015-12-17 13:49:56 +11:00
Matthew Waters
650e5c4fe5
glmemory: implement GstGLBaseMemory::alloc
...
- Create GstGLVideoAllocationParams which is a GstGLAllocationParams subclass.
- Make it possible to allocate glmemory objects directly if no frills are
needed.
2015-12-17 13:49:55 +11:00
Sebastian Dröge
4b04d4a02d
applemedia: Link to IOSurface.framework for the IOSurface API
2015-12-16 10:21:59 +01:00
Sebastian Dröge
34586e0ffd
applemedia: Link to IOKit.framework for IOSurface related functions
2015-12-16 09:39:03 +01:00
Alessandro Decina
fe42e302dd
applemedia: vtdec: fix texture-target on iOS
2015-12-16 17:03:04 +11:00
Alessandro Decina
89b6c296ad
applemedia: vtdec: remove obsolete FIXME
2015-12-16 17:03:04 +11:00
Alessandro Decina
bbdb22efba
applemedia: avfvideosrc: rework GLMemory negotiation
...
Only do GLMemory when a GstGLContext is available AND GLMemory is actually
negotiated with downstream.
2015-12-16 17:03:04 +11:00
Alessandro Decina
0a73abd448
applemedia: avfvideosrc: update after IOSurface changes
...
Prefer GLMemory over sysmem. Also now when pushing GLMemory we push the
original formats (UYVY in OSX, BGRA in iOS) and leave it to downstream to
convert.
2015-12-16 17:03:04 +11:00
Alessandro Decina
9981cd8327
applemedia: vtdec: remove the internal GstGLColorConvert
...
It was added back in the day to make texture sharing work by default with
glimagesink inside playbin. These days glimagesink accepts (and converts) YUV
internally so it's no longer needed.
2015-12-16 17:03:03 +11:00
Alessandro Decina
07bf3796aa
applemedia: vtdec: decouple outputting textures from outputting RGBA
...
We're going to be able to output NV12 textures soon.
2015-12-16 17:03:03 +11:00
Alessandro Decina
8ae0033261
applemedia: vtdec: switch to IOSurface on Mac
...
Switch to using IOSurface instead of CVOpenGLTextureCache on OSX. The latter can't be
used anymore to do YUV => RGB with opengl3 on El Capitan as GL_YCBCR_422_APPLE
has been removed from the opengl3 driver. Also switch to NV12 from UYVY, which
was the only YUV format supported by CVOpenGLTextureCache.
2015-12-16 17:03:03 +11:00
Alessandro Decina
e730b0a8ab
applemedia: rename GstCoreVideoTextureCache to GstVideoTextureCache
...
First of a few commits to stop using CVOpenGLTextureCache on OSX and use
IOSurfaces directly instead. CVOpenGLTextureCache hasn't been updated for OpenGL
3 which is why texture sharing is currently disabled on OSX.
2015-12-16 17:03:03 +11:00
Alessandro Decina
a8b01eb6d1
Revert "vtdec: disable the texture cache on OSX"
...
This reverts commit f02425c4af
.
2015-12-16 17:03:03 +11:00