Commit graph

12708 commits

Author SHA1 Message Date
Sebastian Dröge
b63c58e850 The MediaCodec API is apparently not threadsafe between stop() and release()
So we don't call release() and just hope for the GC to release the
codec in time.
2012-10-15 16:28:38 +02:00
Sebastian Dröge
525ecbb76a Fix plugin cache creation 2012-10-15 16:28:38 +02:00
Sebastian Dröge
e7b21d5796 Cache the codec informations inside the registry
Otherwise we would always load all codecs during plugin initialization
which can take quite some time (because of hardware) and also loads
lots of shared libraries (which number is limited by 64 in Android).
2012-10-15 16:28:38 +02:00
Sebastian Dröge
a98a627370 Properly attach and detach the current threads to the Java VM
Attaching a thread after it was detached will cause segfaults,
as such we use a pthread_key_t to keep track of the JNIEnv* of
the attached threads and in the destructor (i.e. when the
thread exits) we detach the thread.
2012-10-15 16:28:38 +02:00
Sebastian Dröge
bafd4a0b19 Don't get the output format from the codec before it is ready
Apparently things are crashing otherwise.
2012-10-15 16:28:38 +02:00
Sebastian Dröge
c4258069bb Get the input buffers from the codec 2012-10-15 16:28:38 +02:00
Sebastian Dröge
30b25fea35 Fix JNI method call signatures 2012-10-15 16:28:38 +02:00
Sebastian Dröge
686b9cf2fa Initialize the VM will full debugging for now 2012-10-15 16:28:37 +02:00
Sebastian Dröge
d7148efb8e Use NewStringUTF() instead of our own method for that 2012-10-15 16:28:37 +02:00
Sebastian Dröge
5bbaa1f359 Add the TI format to the mapping table too 2012-10-15 16:28:37 +02:00
Sebastian Dröge
e9790ae693 Add another TI specific OpenMAX color format 2012-10-15 16:28:37 +02:00
Sebastian Dröge
4966f68512 Fixes to element/elementfactory creation 2012-10-15 16:28:37 +02:00
Sebastian Dröge
32d4d29706 Some bugfixes to the codec scanning code
Also it's not possible to attach a thread after it was
detached once. As such we simply never detach any thread
at all now.
2012-10-15 16:28:37 +02:00
Sebastian Dröge
a48d2feae0 Fix some compilation errors 2012-10-15 16:28:37 +02:00
Sebastian Dröge
e9dcb1b329 Add important FIXME 2012-10-15 16:28:37 +02:00
Sebastian Dröge
1e73da2941 Add video decoder element 2012-10-15 16:28:37 +02:00
Sebastian Dröge
c846605082 Add some more JNI wrapping 2012-10-15 16:28:37 +02:00
Sebastian Dröge
a6a34c8f1c Add some missing color format constants 2012-10-15 16:28:37 +02:00
Sebastian Dröge
d0ebf261ff Implement basic wrapper around MediaCodec API
Ideally nothing else will be needed from the elements later.
2012-10-15 16:28:37 +02:00
Sebastian Dröge
f99214a657 Some more WIP
Scanning all codecs now and have data structures for holding codec
information and codec contexts. Also function declarations for
working with them.
2012-10-15 16:28:36 +02:00
Sebastian Dröge
8f232ea90b Initial commit 2012-10-15 16:28:36 +02:00
Sebastian Dröge
4cbb7b8a99 androidmedia: Add androidmedia plugin 2012-10-15 16:28:36 +02:00
Sebastian Dröge
932c7175d3 hlsdemux: And fix another deadlock caused by the update thread not correctly shutting down
Conflicts:
	gst/hls/gsthlsdemux.c
2012-10-15 11:46:45 +02:00
Sebastian Dröge
477b04a282 hlsdemux: Also hold the mutex before signalling the condition variable
Conflicts:
	gst/hls/gsturidownloader.c
2012-10-15 11:04:06 +02:00
Sebastian Dröge
113ccb1a53 hlsdemux: Also cancel the downloader before stopping the playlist update task 2012-10-15 10:55:12 +02:00
Sebastian Dröge
b335f5a68e hlsdemux: Only lock the mutex when it's not locked already
Conflicts:
	gst/hls/gsthlsdemux.c
2012-10-15 10:39:52 +02:00
Sebastian Dröge
443703a08e hlsdemux: Fix another race condition by holding the mutex that the condition variable uses
Conflicts:
	gst/hls/gsthlsdemux.c
2012-10-15 10:38:36 +02:00
Sebastian Dröge
e3f00d6252 hlsdemux: Port some things from the last commits 2012-10-15 09:47:35 +02:00
Sebastian Dröge
4df3fad9e4 hlsdemux: Never ever stop a task from the task function
This will deadlock. Also make sure to always post an error message
if required before pausing tasks from the task function.

Should fix another bunch of deadlocks.

Conflicts:
	gst/hls/gsthlsdemux.c
2012-10-15 09:45:14 +02:00
Sebastian Dröge
ca57dd81e4 hlsdemux: Fix lots of deadlocks caused by race conditions in the task state handling 2012-10-15 09:44:09 +02:00
Sergey N. Gorshkov
6d0d209a28 rtmpsink: handle RTMP_Write() return value correctly
Error might also be negative (-1). Unclear if 0 should
be fatal as well though.

https://bugzilla.gnome.org/show_bug.cgi?id=681111
https://bugzilla.gnome.org/show_bug.cgi?id=686009
2012-10-12 23:29:53 +01:00
David Régade
65add5533a rtmpsink: fix memory leak from URI verification via RTMP_ParseURL()
In gst_rtmp_sink_uri_set_uri(), a test is performed in order
to be sure uri is correct for librtmp. This test calls
RTMP_ParseURL with 3 AVal pointers as parameters: host,
playpath and app.

AVal is a struct with a char* + int. After RTMP_ParseURL call,
host.av_val and app.av_val both refer a substring of "uri". But
playpath.av_val may be the result of a malloc so it needs to
be freed.

https://bugzilla.gnome.org/show_bug.cgi?id=681459
2012-10-12 23:09:06 +01:00
Mark Nauwelaerts
953e94ac78 mpegdemux: advance stream time when sending GAP event 2012-10-12 22:35:05 +02:00
Mark Nauwelaerts
c24eb1db9b mpegdemux: send language info downstream if available
... as extracted from dvd event.
2012-10-12 22:35:05 +02:00
Mark Nauwelaerts
f708ab8de9 mpegdemux: remove obsolete struct field 2012-10-12 22:34:56 +02:00
Michael Smith
e3a1e489d2 audioparse: Set framesize and properties correctly when taking format
from caps.
2012-10-12 12:29:59 -07:00
Mark Nauwelaerts
ba47769823 mpegdemux: tweak flow return aggregation 2012-10-12 17:51:51 +02:00
Mark Nauwelaerts
a9c0609ae8 mpegdemux: handle upstream TIME segments 2012-10-12 17:03:38 +02:00
Mark Nauwelaerts
69cfbcbd0b mpegdemux: handle and combine downstream flow return 2012-10-12 17:03:38 +02:00
Mark Nauwelaerts
acc0530f33 mpegdemux: handle new style dvd event 2012-10-12 17:03:38 +02:00
Mark Nauwelaerts
61849aad61 mpegdemux: do not add pad after no-more-pads 2012-10-12 17:03:38 +02:00
Mark Nauwelaerts
44583eae90 mpegdemux: clean up segment sending
... to use the src_segment as a basis for the sent segment,
thereby properly conveying accumulated base_time etc.

Also ensure src_segment is only adjusted once, so that
all downstream segments are identical to avoid stream
misalignment.
2012-10-12 17:03:38 +02:00
Mark Nauwelaerts
b8312df0a3 mpegdemux: send GAP event rather than segment updates 2012-10-12 17:03:38 +02:00
Mark Nauwelaerts
20cd96f5c3 mpegdemux: refactor segment sending 2012-10-12 17:03:37 +02:00
Mark Nauwelaerts
aca6237b3e mpegdemux: refactor init and reset 2012-10-12 17:03:37 +02:00
Mark Nauwelaerts
08d2fff2fd mpegdemux: no more segment closing in 1.0 2012-10-12 16:48:54 +02:00
Mark Nauwelaerts
ab337317fa mpegdemux: clean up some debug statements 2012-10-12 16:48:54 +02:00
Mark Nauwelaerts
304cf8e1c5 dtsdec: fix buffer parsing
... to avoid feeding empty buffers to decoder.
2012-10-12 16:48:54 +02:00
Sebastian Dröge
e5eceaaa73 mpegtsdemux: First push EOS, then destroy all programs
And also properly remove the program from the subclass
2012-10-12 15:38:44 +02:00
Sebastian Dröge
80a3a014f5 hlsdemux: Fix invalid read 2012-10-12 15:09:07 +02:00