MT#61822 add db-media-reload option

Change-Id: I50dbd868eeea2dd15d6cf95f5b80d5b4183f7d10
pull/1897/head
Richard Fuchs 4 months ago
parent e7c424d1ac
commit 40bb74ad52

@ -676,6 +676,7 @@ static void options(int *argc, char ***argv, GHashTable *templates) {
{ "preload-media-files",0,0,G_OPTION_ARG_FILENAME_ARRAY,&rtpe_config.preload_media_files,"Preload media file(s) for playback into memory","FILE"}, { "preload-media-files",0,0,G_OPTION_ARG_FILENAME_ARRAY,&rtpe_config.preload_media_files,"Preload media file(s) for playback into memory","FILE"},
{ "media-files-reload",0,0,G_OPTION_ARG_INT, &rtpe_config.media_refresh,"Refresh/reload preloaded media files at a certain interval","SECONDS"}, { "media-files-reload",0,0,G_OPTION_ARG_INT, &rtpe_config.media_refresh,"Refresh/reload preloaded media files at a certain interval","SECONDS"},
{ "preload-db-media",0,0,G_OPTION_ARG_STRING_ARRAY,&rtpe_config.preload_db_media,"Preload media from database for playback into memory","INT"}, { "preload-db-media",0,0,G_OPTION_ARG_STRING_ARRAY,&rtpe_config.preload_db_media,"Preload media from database for playback into memory","INT"},
{ "db-media-reload",0,0,G_OPTION_ARG_INT, &rtpe_config.db_refresh,"Reload preloaded media from DB at a certain interval","SECONDS"},
{ "audio-buffer-length",0,0, G_OPTION_ARG_INT,&rtpe_config.audio_buffer_length,"Length in milliseconds of audio buffer","INT"}, { "audio-buffer-length",0,0, G_OPTION_ARG_INT,&rtpe_config.audio_buffer_length,"Length in milliseconds of audio buffer","INT"},
{ "audio-buffer-delay",0,0, G_OPTION_ARG_INT,&rtpe_config.audio_buffer_delay,"Initial delay in milliseconds for buffered audio","INT"}, { "audio-buffer-delay",0,0, G_OPTION_ARG_INT,&rtpe_config.audio_buffer_delay,"Initial delay in milliseconds for buffered audio","INT"},
{ "audio-player",0,0, G_OPTION_ARG_STRING, &use_audio_player, "When to enable the internal audio player","on-demand|play-media|transcoding|always"}, { "audio-player",0,0, G_OPTION_ARG_STRING, &use_audio_player, "When to enable the internal audio player","on-demand|play-media|transcoding|always"},
@ -1594,6 +1595,9 @@ int main(int argc, char **argv) {
thread_create_looper(media_player_refresh_timer, rtpe_config.idle_scheduling, thread_create_looper(media_player_refresh_timer, rtpe_config.idle_scheduling,
rtpe_config.idle_priority, "media refresh", rtpe_config.media_refresh * 1000000LL); rtpe_config.idle_priority, "media refresh", rtpe_config.media_refresh * 1000000LL);
thread_create_looper(media_player_refresh_db, rtpe_config.idle_scheduling,
rtpe_config.idle_priority, "db refresh", rtpe_config.db_refresh * 1000000LL);
if (!is_addr_unspecified(&rtpe_config.redis_ep.address) && initial_rtpe_config.redis_delete_async) if (!is_addr_unspecified(&rtpe_config.redis_ep.address) && initial_rtpe_config.redis_delete_async)
thread_create_detach(redis_delete_async_loop, NULL, "redis async"); thread_create_detach(redis_delete_async_loop, NULL, "redis async");

@ -2178,3 +2178,12 @@ enum thread_looper_action media_player_refresh_timer(void) {
return TLA_CONTINUE; return TLA_CONTINUE;
} }
enum thread_looper_action media_player_refresh_db(void) {
if (rtpe_config.db_refresh <= 0)
return TLA_BREAK;
media_player_reload_db_medias();
return TLA_CONTINUE;
}

@ -1178,6 +1178,13 @@ call to inject-DTMF won't be sent to __\-\-dtmf-log-dest=__ or __\-\-listen-tcp-
database instead of reading them from files. Each entry must be an integer database instead of reading them from files. Each entry must be an integer
corresponding to an index from the database. corresponding to an index from the database.
- __\-\-db-media-reload=__*SECONDS*
Similar to the __media-files-reload__ but applicable to media loaded from
database. Note that media stored in a database doesn't have a modification
timestamp, which means that all media will always be reloaded from the
database in the given interval.
- __\-\-audio-buffer-length=__*INT* - __\-\-audio-buffer-length=__*INT*
Set the buffer length used by the audio player (see below) in milliseconds. The Set the buffer length used by the audio player (see below) in milliseconds. The

@ -168,6 +168,7 @@ recording-method = proc
# preload-media-files = /var/media/file1.wav ; /var/media/file2.wav ; /var/media/file3.wav ; on-demand # preload-media-files = /var/media/file1.wav ; /var/media/file2.wav ; /var/media/file3.wav ; on-demand
# media-files-reload = 60 # media-files-reload = 60
# preload-db-media = 1; 2; 3; 4 # preload-db-media = 1; 2; 3; 4
# db-media-reload = 3600
# signalling templates (see key `templates` above) # signalling templates (see key `templates` above)
[templates] [templates]

@ -94,6 +94,7 @@ enum endpoint_learning {
X(cpu_affinity) \ X(cpu_affinity) \
X(max_recv_iters) \ X(max_recv_iters) \
X(media_refresh) \ X(media_refresh) \
X(db_refresh) \
#define RTPE_CONFIG_UINT64_PARAMS \ #define RTPE_CONFIG_UINT64_PARAMS \
X(bw_limit) X(bw_limit)

@ -156,6 +156,7 @@ bool media_player_reload_db_media(unsigned long long);
unsigned int media_player_reload_db_medias(void); unsigned int media_player_reload_db_medias(void);
enum thread_looper_action media_player_refresh_timer(void); enum thread_looper_action media_player_refresh_timer(void);
bool media_player_preload_db(char **); bool media_player_preload_db(char **);
enum thread_looper_action media_player_refresh_db(void);
struct send_timer *send_timer_new(struct packet_stream *); struct send_timer *send_timer_new(struct packet_stream *);
void send_timer_push(struct send_timer *, struct codec_packet *); void send_timer_push(struct send_timer *, struct codec_packet *);

Loading…
Cancel
Save