Alessandro Decina
052e4804eb
vtdec: fix texture sharing on iOS
...
Move GLES calls to the context thread. Fix
CVOpenGLESTextureCacheCreateTextureFromImage usage on iOS.
2015-02-09 21:18:24 +11:00
Sebastian Dröge
d4d02c6f9d
corevideotexturecache: Add some assertions instead of just dereferencing NULL
2015-02-03 17:32:24 +01:00
Sebastian Dröge
b51254395a
corevideotexturecache: Don't unconditionally use the CoreMedia meta on iOS
...
We might instead have a CoreVideo meta.
2015-02-03 17:32:24 +01:00
Sebastian Dröge
dac3e4ca06
vtdec: Don't dereference NULL frames when draining/flushing
2015-02-03 15:38:40 +01:00
Alessandro Decina
f577b52e5d
applemedia: rework GL texture sharing
...
Use YUV instead of RGB textures, then convert using the new apple specific
shader in GstGLColorConvert. Also use GLMemory directly instead of using the
GL upload meta, avoiding an extra texture copy we used to have before.
2015-01-30 00:34:08 +11:00
Alessandro Decina
77d48abfab
applemedia: vtdec: fix CMBlockBufferRef leak
...
Fix huge leak that went unnoticed for too long. Oops.
2015-01-30 00:34:08 +11:00
Alessandro Decina
8734abb1ce
applemedia: don't call CVPixelBufferLockBaseAddress when doing texture sharing
...
When doing texture sharing we don't need to call CVPixelBufferLockBaseAddress to
map the buffer in CPU. This cuts about 10% relative cpu time from a vtdec !
glimagesink pipeline.
2015-01-30 00:34:08 +11:00
Alessandro Decina
e91989136a
applemedia: corevideobuffer: make mapping the CVPixelBuffer in CPU optional
...
Mapping is not necessary and impacts performance when doing texture sharing with
downstream
2015-01-30 00:34:08 +11:00
Matthew Waters
c6056b0dd5
applemedia: update for gstgl cocoa -> cgl change
2015-01-23 16:12:24 +11:00
Alessandro Decina
d95a12e185
vtdec: implement the GL texture upload meta
2015-01-15 14:10:43 +11:00
Alessandro Decina
cdfe90aaba
avfvideosrc: implement the GL texture upload meta
2015-01-15 14:10:43 +11:00
Florian Zwoch
7d318a572c
vtenc: Unlock the stream lock while waiting for pending frames to be completed in finish()
...
We might otherwise deadlock because gst_vtenc_enqueue_buffer() can be
called again and will take the stream lock again from another thread.
https://bugzilla.gnome.org/show_bug.cgi?id=742174
2015-01-08 14:48:20 +01:00
Alessandro Decina
5496fd3e75
avfvideosrc: improve timestamp code
...
Use a combination of the running time and CMClockGetTime from AVF to compute
timestamps.
2014-12-27 12:43:45 +11:00
Sebastian Dröge
568da160cb
vtenc: Instead of crashing if no corresponding frame is found, ignore this
...
... and hope that everything will be fine. This shouldn't really happen but
previously happened during shutdown. It should be fixed in videoencoder now,
but better be on the safe side here.
2014-12-22 11:49:08 +01:00
Alessandro Decina
0156725480
avfvideosrc: improve timestamping and latency reporting
...
Use AVF provided timings to timestamp output buffers. Use the running time at
the time the first buffer is produced to base timestamps on. Report 1-frame
latency based on the negotiated framerate instead of hardcoding 4ms latency.
2014-12-17 12:24:05 +11:00
Alessandro Decina
4d89d7116b
vtenc: bump rank to PRIMARY
2014-12-11 00:02:26 +11:00
Alessandro Decina
21f8c96d75
vtenc: negotiate profile and level with downstream
2014-12-10 22:36:53 +11:00
Alessandro Decina
8166487a00
vtenc: report latency
2014-12-10 19:44:51 +11:00
Sebastian Dröge
b88e4304f1
vtenc: Add properties to specify the maximum keyframe interval in frames and seconds
2014-12-05 16:33:54 +01:00
Sebastian Dröge
1a2362eb2b
vtenc: Fix conversion of the bitrate property and our internal bitrate storage
...
The property is in kbit/s and we store it in bit/s, so just multiply and
divide by 1000. No need to put a factor of 8 in there.
kVTCompressionPropertyKey_AverageBitRate is also in bit/s according to
its documentation.
2014-12-05 16:17:16 +01:00
Alessandro Decina
d25813c9bc
vtenc: add quality property
2014-11-27 18:41:21 +01:00
Alessandro Decina
6a4270d5cc
vtenc: set profile and level in caps
2014-11-27 18:41:21 +01:00
Alessandro Decina
d45a2f0480
vtenc: let VT pick the bitrate by default
2014-11-21 15:48:08 +01:00
Alessandro Decina
d800ac023b
vtenc: set H264_Baseline_AutoLevel on OSX as well
2014-11-20 16:06:46 +01:00
Alessandro Decina
d0ce9a6f7c
vtdec: disable the reorder queue for baseline streams
2014-11-20 16:06:46 +01:00
Sebastian Dröge
6e2e8ec0ac
vtdec: Fix divide by zero in the picture buffer length calculation
2014-11-20 09:42:24 +01:00
Alessandro Decina
5977ef5552
vtenc: fix build on iOS
2014-11-12 16:45:12 +01:00
Alessandro Decina
ad00f4a0e2
coremediabuffer: set ->pixel_buf for CVPixelBuffer buffers
...
Fix a bug for which we never actually set ->pixel_buf to non-NULL for
CVPixelBuffer buffers.
2014-11-12 15:40:30 +01:00
Alessandro Decina
a1cc1b34e1
vtenc: fix compilation on < 10.9
2014-11-12 10:00:11 +01:00
Alessandro Decina
bc7dbd7b51
vtenc: enable the hw encoder on OSX
2014-11-11 18:01:54 +01:00
Sebastian Dröge
98b856d630
avfvideosrc: Don't pretend to support reconfiguration
...
We will run into an assertion in set_caps() if we try to change
caps while the source is already running. Don't try to find new
caps in GstBaseSrc::negotiate() to prevent caps changes.
2014-11-09 10:41:52 +01:00
Alessandro Decina
1d97516731
vtenc: add realtime and allow-frame-reordering properties
2014-11-07 00:22:08 +01:00
Sebastian Dröge
68c067e3c9
vtenc: Fix locking
...
The object lock only protects the session, as we modify
the session from other threads when the bitrate property
is changed. Don't hold it much longer than for session
related things.
And we need to release the video decoder stream lock before
enqueueing a frames. It might wait for our callback to dequeue
a frame from another thread, which will then take the stream
lock too and deadlock.
2014-10-21 16:22:06 +02:00
Sebastian Dröge
ad649138aa
vtenc: Use kVTProfileLevel_H264_Baseline_AutoLevel only on iOS
...
It is not required on OSX apparently and was only added in 10.9.6 there.
Calculating the correct level from the configuration is not trivial, so let's
just not set a level at all here.
2014-10-19 14:57:43 +02:00
Sebastian Dröge
b57f255f26
vtenc: VTCompressionSessionPrepareToEncodeFrames only exists since 10.9.6
...
Check with configure for it instead of using one of the availability macros
as those wouldn't work as expected with minor versions.
2014-10-19 14:51:40 +02:00
Sebastian Dröge
e79355078e
vtenc: Remove unused #define
2014-10-19 14:32:31 +02:00
Sebastian Dröge
3cead041f6
vtdec: Set reorder length to 0 if we can't calculate it
...
Instead of leaving it at whatever value it had before.
2014-10-14 09:19:59 +02:00
Sebastian Dröge
3c1ccb64eb
vtenc: Fix encoder to work on iOS
...
iOS has special stride requirements that we don't know yet, so copy
input buffers into buffers allocated by iOS for now.
Later we should check the stride and probably provide a buffer pool for these
buffers so upstream can directly write in there.
2014-09-19 14:47:05 +03:00
Sebastian Dröge
bee1477f08
applemedia: We need to map the coremedia buffers in non-readonly mode
...
Our buffers claim to be writable so other elements expect to be able
to write there without losing their changes.
2014-09-19 14:47:04 +03:00
Sebastian Dröge
9380f6282d
vtenc: Let the encoder automatically choose a h264 level
...
We should negotiate these things via caps...
2014-09-18 17:49:46 +03:00
Sebastian Dröge
31476a3c46
vtenc: Use 0 instead of G_MAXDOUBLE as the max keyframe interval
...
0 means no limit, which was meant here with G_MAXDOUBLE probably.
2014-09-18 13:45:33 +03:00
Sebastian Dröge
8c1e84ff71
vtenc: Expected duration is supposed to be the duration of the stream, not a frame
...
Just don't set it for now, it isn't really needed.
2014-09-18 13:42:24 +03:00
Sebastian Dröge
61c40523df
vtenc: Properly handle keyframes
...
Especially set the SYNC_POINT flag on keyframes.
2014-09-18 13:11:05 +03:00
Sebastian Dröge
de9b0be86d
vtdec: Fix compilation
2014-09-18 10:30:04 +03:00
Sebastian Dröge
e653068bc2
vtdec: Handle 0/1 framerates correctly by not calculating their frame duration
2014-09-18 09:47:06 +03:00
Sebastian Dröge
916155da2b
atdec: Fix some compiler warnings with newer clang
2014-09-17 17:37:12 +03:00
Sebastian Dröge
ddea2e4498
vtenc: Prepare encoder after setup
...
This will allow encoding to happen faster on the first frame.
2014-09-17 17:10:58 +03:00
Sebastian Dröge
c6f17d6013
vtenc: Only drain the encoder in ::finish(), not on every frame
...
Otherwise quality and bitrate will be bad.
2014-09-17 17:08:57 +03:00
Sebastian Dröge
0390398e39
vtenc: Error out if encoding returned an error
...
Otherwise we will just continue consuming frames until all memory is filled
up and the app crashes.
2014-09-17 15:39:26 +03:00
Sebastian Dröge
e3bc32fb58
vtenc: Check for errors from VTCompressionSessionCompleteFrames()
2014-09-17 14:56:05 +03:00