summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDoubango Telecom <github@doubango.org>2016-08-08 22:25:31 +0200
committerDoubango Telecom <github@doubango.org>2016-08-08 22:25:31 +0200
commita35d94460560cce23ddb54b055b8e4298ad77309 (patch)
tree407ceb38b4f75819387e5916cbac20e125523a21
parent15a5a3299de6327388b634c1208fcee875fe314a (diff)
parent554bc193f0039ec129b7ac2eb80934bc67815dda (diff)
downloaddoubango-a35d94460560cce23ddb54b055b8e4298ad77309.zip
doubango-a35d94460560cce23ddb54b055b8e4298ad77309.tar.gz
Merge branch 'master' of https://github.com/DoubangoTelecom/doubango
-rw-r--r--[-rwxr-xr-x]thirdparties/iphone/lib/universal/libcrypto.abin12036712 -> 11930672 bytes
-rw-r--r--[-rwxr-xr-x]thirdparties/iphone/lib/universal/libssl.abin2178976 -> 1995080 bytes
-rw-r--r--thirdparties/mac/lib/universal/libcrypto.abin0 -> 6361528 bytes
-rw-r--r--thirdparties/mac/lib/universal/libssl.abin0 -> 1029336 bytes
-rwxr-xr-xtinyDAV/src/audio/coreaudio/tdav_consumer_audiounit.c40
-rwxr-xr-xtinyDAV/src/audio/coreaudio/tdav_producer_audiounit.c41
-rwxr-xr-xtinyNET/src/tnet_transport_cfsocket.c1
7 files changed, 80 insertions, 2 deletions
diff --git a/thirdparties/iphone/lib/universal/libcrypto.a b/thirdparties/iphone/lib/universal/libcrypto.a
index e9263a5..a20268e 100755..100644
--- a/thirdparties/iphone/lib/universal/libcrypto.a
+++ b/thirdparties/iphone/lib/universal/libcrypto.a
Binary files differ
diff --git a/thirdparties/iphone/lib/universal/libssl.a b/thirdparties/iphone/lib/universal/libssl.a
index 2833b44..7136aa5 100755..100644
--- a/thirdparties/iphone/lib/universal/libssl.a
+++ b/thirdparties/iphone/lib/universal/libssl.a
Binary files differ
diff --git a/thirdparties/mac/lib/universal/libcrypto.a b/thirdparties/mac/lib/universal/libcrypto.a
new file mode 100644
index 0000000..8a2d686
--- /dev/null
+++ b/thirdparties/mac/lib/universal/libcrypto.a
Binary files differ
diff --git a/thirdparties/mac/lib/universal/libssl.a b/thirdparties/mac/lib/universal/libssl.a
new file mode 100644
index 0000000..c669205
--- /dev/null
+++ b/thirdparties/mac/lib/universal/libssl.a
Binary files differ
diff --git a/tinyDAV/src/audio/coreaudio/tdav_consumer_audiounit.c b/tinyDAV/src/audio/coreaudio/tdav_consumer_audiounit.c
index 12ed8db..6cbe2b5 100755
--- a/tinyDAV/src/audio/coreaudio/tdav_consumer_audiounit.c
+++ b/tinyDAV/src/audio/coreaudio/tdav_consumer_audiounit.c
@@ -37,6 +37,8 @@
#define kRingPacketCount +10
static tsk_size_t tdav_consumer_audiounit_get(tdav_consumer_audiounit_t* self, void* data, tsk_size_t size);
+static int tdav_consumer_audiounit_pause(tmedia_consumer_t* self);
+static int tdav_consumer_audiounit_resume(tmedia_consumer_t* self);
static OSStatus __handle_output_buffer(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
@@ -109,6 +111,10 @@ int tdav_consumer_audiounit_set(tmedia_consumer_t* self, const tmedia_param_t* p
int32_t interrupt = *((uint8_t*)param->value) ? 1 : 0;
return tdav_audiounit_handle_interrupt(consumer->audioUnitHandle, interrupt);
}
+ else if (tsk_striequals(param->key, "pause") || tsk_striequals(param->key, "hold")) {
+ int32_t pause = *((uint8_t*)param->value) ? 1 : 0;
+ return pause ? tdav_consumer_audiounit_pause(self) : tdav_consumer_audiounit_resume(self);
+ }
}
}
return tdav_consumer_audio_set(TDAV_CONSUMER_AUDIO(self), param);
@@ -337,11 +343,43 @@ static int tdav_consumer_audiounit_pause(tmedia_consumer_t* self)
TSK_DEBUG_ERROR("Invalid parameter");
return -1;
}
- consumer->paused = tsk_true;
+ if (!consumer->paused) {
+ consumer->paused = tsk_true;
+ if (consumer->started) {
+ int ret = tdav_audiounit_handle_stop(consumer->audioUnitHandle);
+ if(ret) {
+ TSK_DEBUG_ERROR("tdav_audiounit_handle_stop failed with error code=%d", ret);
+ }
+ consumer->started = false;
+ }
+ }
+
TSK_DEBUG_INFO("AudioUnit consumer paused");
return 0;
}
+static int tdav_consumer_audiounit_resume(tmedia_consumer_t* self)
+{
+ tdav_consumer_audiounit_t* consumer = (tdav_consumer_audiounit_t*)self;
+ if(!consumer) {
+ TSK_DEBUG_ERROR("Invalid parameter");
+ return -1;
+ }
+ if (consumer->paused) {
+ consumer->paused = tsk_false;
+ if (!consumer->started) {
+ int ret = tdav_audiounit_handle_start(consumer->audioUnitHandle);
+ if(ret) {
+ TSK_DEBUG_ERROR("tdav_audiounit_handle_start failed with error code=%d", ret);
+ }
+ consumer->started = true;
+ }
+ }
+
+ TSK_DEBUG_INFO("AudioUnit consumer resumed");
+ return 0;
+}
+
static int tdav_consumer_audiounit_stop(tmedia_consumer_t* self)
{
tdav_consumer_audiounit_t* consumer = (tdav_consumer_audiounit_t*)self;
diff --git a/tinyDAV/src/audio/coreaudio/tdav_producer_audiounit.c b/tinyDAV/src/audio/coreaudio/tdav_producer_audiounit.c
index 7f8af7e..b2b60f7 100755
--- a/tinyDAV/src/audio/coreaudio/tdav_producer_audiounit.c
+++ b/tinyDAV/src/audio/coreaudio/tdav_producer_audiounit.c
@@ -35,6 +35,9 @@
#define kRingPacketCount 10
+static int tdav_producer_audiounit_pause(tmedia_producer_t* self);
+static int tdav_producer_audiounit_resume(tmedia_producer_t* self);
+
static OSStatus __handle_input_buffer(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
@@ -91,6 +94,10 @@ int tdav_producer_audiounit_set(tmedia_producer_t* self, const tmedia_param_t* p
int32_t interrupt = *((uint8_t*)param->value) ? 1 : 0;
return tdav_audiounit_handle_interrupt(producer->audioUnitHandle, interrupt);
}
+ else if (tsk_striequals(param->key, "pause") || tsk_striequals(param->key, "hold")) {
+ int32_t pause = *((uint8_t*)param->value) ? 1 : 0;
+ return pause ? tdav_producer_audiounit_pause(self) : tdav_producer_audiounit_resume(self);
+ }
}
}
return tdav_producer_audio_set(TDAV_PRODUCER_AUDIO(self), param);
@@ -319,11 +326,43 @@ static int tdav_producer_audiounit_pause(tmedia_producer_t* self)
TSK_DEBUG_ERROR("Invalid parameter");
return -1;
}
- producer->paused = tsk_true;
+ if (!producer->paused) {
+ producer->paused = tsk_true;
+ if (producer->started) {
+ int ret = tdav_audiounit_handle_stop(producer->audioUnitHandle);
+ if(ret) {
+ TSK_DEBUG_ERROR("tdav_audiounit_handle_stop failed with error code=%d", ret);
+ // do not return even if failed => we MUST stop the thread!
+ }
+ producer->started = false;
+ }
+ }
TSK_DEBUG_INFO("AudioUnit producer paused");
return 0;
}
+static int tdav_producer_audiounit_resume(tmedia_producer_t* self)
+{
+ tdav_producer_audiounit_t* producer = (tdav_producer_audiounit_t*)self;
+ if(!producer) {
+ TSK_DEBUG_ERROR("Invalid parameter");
+ return -1;
+ }
+ if (producer->paused) {
+ if (!producer->started) {
+ int ret = tdav_audiounit_handle_start(producer->audioUnitHandle);
+ if(ret) {
+ TSK_DEBUG_ERROR("tdav_audiounit_handle_start failed with error code=%d", ret);
+ // do not return even if failed => we MUST stop the thread!
+ }
+ }
+ producer->paused = false;
+ producer->started = true;
+ }
+ TSK_DEBUG_INFO("AudioUnit producer resumed");
+ return 0;
+}
+
static int tdav_producer_audiounit_stop(tmedia_producer_t* self)
{
tdav_producer_audiounit_t* producer = (tdav_producer_audiounit_t*)self;
diff --git a/tinyNET/src/tnet_transport_cfsocket.c b/tinyNET/src/tnet_transport_cfsocket.c
index b66c3b3..ade8bc1 100755
--- a/tinyNET/src/tnet_transport_cfsocket.c
+++ b/tinyNET/src/tnet_transport_cfsocket.c
@@ -1325,6 +1325,7 @@ bail:
}
}
tsk_safeobj_unlock(context);
+
// Release context
CFRelease(context->cf_run_loop);
context->cf_run_loop = NULL;
OpenPOWER on IntegriCloud