{
switch_io_event_hook_read_frame_t *ptr;
switch_status_t status = SWITCH_STATUS_FALSE;
- int need_codec, perfect, do_bugs = 0, do_resample = 0, is_cng = 0;
+ int need_codec, perfect, do_bugs = 0, do_resample = 0, is_cng = 0, tap_only = 0;
switch_codec_implementation_t codec_impl;
unsigned int flag = 0;
int i;
switch_media_bug_t *bp;
switch_bool_t ok = SWITCH_TRUE;
int prune = 0;
+
+ tap_only = 1;
switch_thread_rwlock_rdlock(session->bug_rwlock);
}
if (bp->ready) {
+ if (!switch_test_flag(bp, SMBF_TAP_NATIVE_READ) && !switch_test_flag(bp, SMBF_TAP_NATIVE_WRITE)) {
+ tap_only = 0;
+ }
+
if (switch_test_flag(bp, SMBF_TAP_NATIVE_READ)) {
if (bp->callback) {
bp->native_read_frame = *frame;
need_codec = 0;
}
+ if (tap_only) {
+ need_codec = 0;
+ }
+
if (switch_test_flag(session, SSF_READ_TRANSCODE) && !need_codec && switch_core_codec_ready(session->read_codec)) {
switch_core_session_t *other_session;