Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
mpegts input: another optimization for mpegts_mux_find_pid_()
  • Loading branch information
perexg committed Nov 16, 2014
1 parent eb60025 commit 6ce9b4d
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 18 deletions.
7 changes: 0 additions & 7 deletions src/input/mpegts/dvb_support.c
Expand Up @@ -864,7 +864,6 @@ dvb_sat_position_to_str(int position, char *buf, size_t buflen)
snprintf(buf, buflen, "%d", abs(position / 10));
if (dec)
snprintf(buf + strlen(buf), buflen - strlen(buf), ".%d", abs(dec));
snprintf(buf + strlen(buf), buflen - strlen(buf), "%c", position < 0 ? 'W' : 'E');
return buf;
}

Expand Down Expand Up @@ -899,19 +898,13 @@ dvb_sat_position_from_str( const char *buf )
/**
*
*/
extern pthread_mutex_t mpegts_pid_skel_mutex;

void dvb_init( void )
{
pthread_mutex_init(&mpegts_pid_skel_mutex, NULL);
}

void dvb_done( void )
{
extern SKEL_DECLARE(mpegts_table_state_skel, struct mpegts_table_state);
extern SKEL_DECLARE(mpegts_pid_skel, mpegts_pid_t);

SKEL_FREE(mpegts_table_state_skel);
SKEL_FREE(mpegts_pid_skel);
pthread_mutex_destroy(&mpegts_pid_skel_mutex);
}
1 change: 1 addition & 0 deletions src/input/mpegts/mpegts_input.c
Expand Up @@ -349,6 +349,7 @@ mpegts_input_open_pid
buf, mp->mp_pid, mp->mp_pid, type, owner);
} else {
free(mps);
mps = NULL;
}
}
return mp;
Expand Down
17 changes: 6 additions & 11 deletions src/input/mpegts/mpegts_mux.c
Expand Up @@ -28,9 +28,6 @@

#include <assert.h>

pthread_mutex_t mpegts_pid_skel_mutex;
SKEL_DECLARE(mpegts_pid_skel, mpegts_pid_t);

static void mpegts_mux_scan_timeout ( void *p );

/* ****************************************************************************
Expand Down Expand Up @@ -1143,17 +1140,15 @@ mpegts_mux_find_pid_ ( mpegts_mux_t *mm, int pid, int create )
skel.mp_pid = pid;
mp = RB_FIND(&mm->mm_pids, &skel, mp_link, mp_cmp);
if (mp == NULL && create) {
pthread_mutex_lock(&mpegts_pid_skel_mutex);
SKEL_ALLOC(mpegts_pid_skel);
mpegts_pid_skel->mp_pid = pid;
mp = RB_INSERT_SORTED(&mm->mm_pids, mpegts_pid_skel, mp_link, mp_cmp);
if (!mp) {
mp = mpegts_pid_skel;
SKEL_USED(mpegts_pid_skel);
mp = calloc(1, sizeof(*mp));
mp->mp_pid = pid;
if (!RB_INSERT_SORTED(&mm->mm_pids, mp, mp_link, mp_cmp)) {
mp->mp_fd = -1;
mp->mp_cc = -1;
} else {
free(mp);
mp = NULL;
}
pthread_mutex_unlock(&mpegts_pid_skel_mutex);
}
if (mp) {
mm->mm_last_pid = pid;
Expand Down

0 comments on commit 6ce9b4d

Please sign in to comment.