static switch_status_t shout_file_seek(switch_file_handle_t *handle, unsigned int *cur_sample, int64_t samples, int whence)
{
shout_context_t *context = handle->private_info;
-
+
if (handle->handler || switch_test_flag(handle, SWITCH_FILE_FLAG_WRITE)) {
return SWITCH_STATUS_FALSE;
} else {
switch_status_t status;
struct input_callback_state *cb_state = buf;
switch_file_handle_t *fh = cb_state->extra;
- struct js_session *jss = cb_state->session_state;
+ //struct js_session *jss = cb_state->session_state;
if (!switch_test_flag(fh, SWITCH_FILE_OPEN)) {
return SWITCH_STATUS_FALSE;
switch_core_file_seek(fh, &pos, 0, SEEK_SET);
return SWITCH_STATUS_SUCCESS;
} else if (!strncasecmp(ret, "seek", 4)) {
- switch_codec_t *codec;
+ //switch_codec_t *codec;
uint32_t samps = 0;
uint32_t pos = 0;
char *p;
- codec = switch_core_session_get_read_codec(jss->session);
+ //codec = switch_core_session_get_read_codec(jss->session);
if ((p = strchr(ret, ':'))) {
p++;
step = 1000;
}
if (step > 0) {
- samps = step * (codec->implementation->actual_samples_per_second / 1000);
+ samps = step * (fh->samplerate / 1000);
switch_core_file_seek(fh, &pos, samps, SEEK_CUR);
} else {
- samps = abs(step) * (codec->implementation->actual_samples_per_second / 1000);
+ samps = abs(step) * (fh->samplerate / 1000);
switch_core_file_seek(fh, &pos, fh->pos - samps, SEEK_SET);
}
} else {
- samps = atoi(p) * (codec->implementation->actual_samples_per_second / 1000);
+ samps = atoi(p) * (fh->samplerate / 1000);
switch_core_file_seek(fh, &pos, samps, SEEK_SET);
}
}
switch_core_file_seek(fhp, &pos, 0, SEEK_SET);
return SWITCH_STATUS_SUCCESS;
} else if (!strncasecmp(cmd, "seek", 4)) {
- switch_codec_t *codec;
+ //switch_codec_t *codec;
unsigned int samps = 0;
unsigned int pos = 0;
char *p;
- codec = switch_core_session_get_read_codec(session);
+ //codec = switch_core_session_get_read_codec(session);
if ((p = strchr(cmd, ':'))) {
p++;
step = 1000;
}
- samps = step * (codec->implementation->samples_per_second / 1000);
+ samps = step * (fhp->samplerate / 1000);
target = (int32_t)fhp->pos + samps;
if (target < 0) {
switch_core_file_seek(fhp, &pos, target, SEEK_SET);
} else {
- samps = switch_atoui(p) * (codec->implementation->samples_per_second / 1000);
+ samps = switch_atoui(p) * (fhp->samplerate / 1000);
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "seek to position %d\n", samps);
switch_core_file_seek(fhp, &pos, samps, SEEK_SET);
}
}
if (read_impl.actual_samples_per_second) {
- switch_channel_set_variable_printf(channel, "record_seconds", "%d", fh->samples_out / read_impl.actual_samples_per_second);
- switch_channel_set_variable_printf(channel, "record_ms", "%d", fh->samples_out / (read_impl.actual_samples_per_second / 1000));
+ switch_channel_set_variable_printf(channel, "record_seconds", "%d", fh->samples_out / fh->samplerate);
+ switch_channel_set_variable_printf(channel, "record_ms", "%d", fh->samples_out / (fh->samplerate/ 1000));
}
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "done playing file %s\n", file);
if (read_impl.samples_per_second) {
- switch_channel_set_variable_printf(channel, "playback_seconds", "%d", fh->samples_in / read_impl.samples_per_second);
- switch_channel_set_variable_printf(channel, "playback_ms", "%d", fh->samples_in / (read_impl.samples_per_second / 1000));
+ switch_channel_set_variable_printf(channel, "playback_seconds", "%d", fh->samples_in / fh->samplerate);
+ switch_channel_set_variable_printf(channel, "playback_ms", "%d", fh->samples_in / fh->samplerate);
}
switch_channel_set_variable_printf(channel, "playback_samples", "%d", fh->samples_in);