Skip to content

Commit

Permalink
FS-7512: add audio to png
Browse files Browse the repository at this point in the history
  • Loading branch information
seven1240 authored and mjerris committed May 28, 2015
1 parent 8c56410 commit 70953c8
Showing 1 changed file with 26 additions and 1 deletion.
27 changes: 26 additions & 1 deletion src/mod/formats/mod_png/mod_png.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@
*
* Contributor(s):
*
* mod_png -- play a png as video
* Seven Du <[email protected]>
*
* mod_png -- play a png as video, optionally with audio
*
*/

Expand All @@ -44,6 +46,7 @@ struct png_file_context {
int sent;
int max;
int samples;
switch_file_handle_t *audio_fh;
};

typedef struct png_file_context png_file_context_t;
Expand Down Expand Up @@ -87,13 +90,29 @@ static switch_status_t png_file_open(switch_file_handle_t *handle, const char *p
context->max = 10000;

if (handle->params) {
const char *audio_file = switch_event_get_header(handle->params, "audio_file");
const char *max = switch_event_get_header(handle->params, "png_ms");
int tmp;

if (max) {
tmp = atol(max);
context->max = tmp;
}

if (audio_file) {
context->audio_fh = switch_core_alloc(handle->memory_pool, sizeof(*context->audio_fh));
switch_assert(context->audio_fh);

if (switch_core_file_open(context->audio_fh,
audio_file,
handle->channels,
handle->samplerate,
SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT,
NULL) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Failed to open audio file %s\n", audio_file);
context->audio_fh = NULL;
}
}
}

if (context->max) {
Expand All @@ -120,6 +139,8 @@ static switch_status_t png_file_close(switch_file_handle_t *handle)

switch_img_free(&context->img);

if (context->audio_fh) switch_core_file_close(context->audio_fh);

return SWITCH_STATUS_SUCCESS;
}

Expand All @@ -128,6 +149,10 @@ static switch_status_t png_file_read(switch_file_handle_t *handle, void *data, s

png_file_context_t *context = (png_file_context_t *)handle->private_info;

if (context->audio_fh) {
return switch_core_file_read(context->audio_fh, data, len);
}

if (!context->img || !context->samples) {
return SWITCH_STATUS_FALSE;
}
Expand Down

0 comments on commit 70953c8

Please sign in to comment.