Changed the PID lookup and other optimizations

Followed the Adam's advice to remove _fast functions.
This commit is contained in:
Jaroslav Kysela 2014-03-06 12:42:06 +01:00 committed by Adam Sutton
parent c6446b1eef
commit 7f03d0350b
7 changed files with 24 additions and 24 deletions

View file

@ -603,16 +603,16 @@ void mpegts_mux_remove_subscriber(mpegts_mux_t *mm, th_subscription_t *s, int re
int mpegts_mux_subscribe(mpegts_mux_t *mm, const char *name, int weight);
void mpegts_mux_unsubscribe_by_name(mpegts_mux_t *mm, const char *name);
#define mpegts_mux_find_pid_fast(mm, pid, create) ({ \
#define mpegts_mux_find_pid(mm, pid, create) ({ \
mpegts_pid_t *__mp; \
if ((mm)->mm_last_pid != (pid)) \
__mp = mpegts_mux_find_pid(mm, pid, create); \
__mp = mpegts_mux_find_pid_(mm, pid, create); \
else \
__mp = (mm)->mm_last_mp; \
__mp; \
})
mpegts_pid_t *mpegts_mux_find_pid(mpegts_mux_t *mm, int pid, int create);
mpegts_pid_t *mpegts_mux_find_pid_(mpegts_mux_t *mm, int pid, int create);
size_t mpegts_input_recv_packets
(mpegts_input_t *mi, mpegts_mux_instance_t *mmi, uint8_t *tsb, size_t len,

View file

@ -1176,7 +1176,7 @@ psi_desc_add_ca
tvhdebug("pmt", " caid %04X (%s) provider %08X pid %04X",
caid, descrambler_caid2name(caid), provid, pid);
if((st = service_stream_find_fast((service_t*)t, pid)) == NULL) {
if((st = service_stream_find((service_t*)t, pid)) == NULL) {
st = service_stream_create((service_t*)t, pid, SCT_CA);
r |= PMT_UPDATE_NEW_CA_STREAM;
}
@ -1282,7 +1282,7 @@ psi_desc_teletext(mpegts_service_t *t, const uint8_t *ptr, int size,
// higher than normal MPEG TS (0x2000 ++)
int pid = DVB_TELETEXT_BASE + page;
if((st = service_stream_find_fast((service_t*)t, pid)) == NULL) {
if((st = service_stream_find((service_t*)t, pid)) == NULL) {
r |= PMT_UPDATE_NEW_STREAM;
st = service_stream_create((service_t*)t, pid, SCT_TEXTSUB);
st->es_delete_me = 1;
@ -1492,7 +1492,7 @@ psi_parse_pmt
if(hts_stream_type != SCT_UNKNOWN) {
if((st = service_stream_find_fast((service_t*)t, pid)) == NULL) {
if((st = service_stream_find((service_t*)t, pid)) == NULL) {
update |= PMT_UPDATE_NEW_STREAM;
st = service_stream_create((service_t*)t, pid, hts_stream_type);
}

View file

@ -373,7 +373,7 @@ mpegts_input_recv_packets
name, pid, pid, mmi);
/* Find PID */
if ((mp = mpegts_mux_find_pid_fast(mm, pid, 0))) {
if ((mp = mpegts_mux_find_pid(mm, pid, 0))) {
int stream = 0;
int table = 0;

View file

@ -901,7 +901,7 @@ static int mp_cmp ( mpegts_pid_t *a, mpegts_pid_t *b )
};
mpegts_pid_t *
mpegts_mux_find_pid ( mpegts_mux_t *mm, int pid, int create )
mpegts_mux_find_pid_ ( mpegts_mux_t *mm, int pid, int create )
{
mpegts_pid_t *mp;

View file

@ -68,7 +68,7 @@ ts_recv_packet0
{
int off, pusi, cc, error;
service_set_streaming_status_flags_fast((service_t*)t, TSS_MUX_PACKETS);
service_set_streaming_status_flags((service_t*)t, TSS_MUX_PACKETS);
if(streaming_pad_probe_type(&t->s_streaming_pad, SMT_MPEGTS))
ts_remux(t, tsb);
@ -206,7 +206,7 @@ ts_recv_packet1
pthread_mutex_lock(&t->s_stream_mutex);
service_set_streaming_status_flags_fast((service_t*)t, TSS_INPUT_HARDWARE);
service_set_streaming_status_flags((service_t*)t, TSS_INPUT_HARDWARE);
if(error) {
/* Transport Error Indicator */
@ -216,7 +216,7 @@ ts_recv_packet1
pid = (tsb[1] & 0x1f) << 8 | tsb[2];
st = service_stream_find_fast((service_t*)t, pid);
st = service_stream_find((service_t*)t, pid);
/* Extract PCR */
if (pcr != PTS_UNSET)
@ -228,7 +228,7 @@ ts_recv_packet1
}
if(!error)
service_set_streaming_status_flags_fast((service_t*)t, TSS_INPUT_SERVICE);
service_set_streaming_status_flags((service_t*)t, TSS_INPUT_SERVICE);
avgstat_add(&t->s_rate, 188, dispatch_clock);
@ -259,9 +259,9 @@ ts_recv_packet1
if(!error && t->s_scrambled != 0) {
if(n == 0) {
service_set_streaming_status_flags_fast((service_t*)t, TSS_NO_DESCRAMBLER);
service_set_streaming_status_flags((service_t*)t, TSS_NO_DESCRAMBLER);
} else if(m == n) {
service_set_streaming_status_flags_fast((service_t*)t, TSS_NO_ACCESS);
service_set_streaming_status_flags((service_t*)t, TSS_NO_ACCESS);
}
}
@ -282,7 +282,7 @@ ts_recv_packet2(mpegts_service_t *t, const uint8_t *tsb)
elementary_stream_t *st;
int pid = (tsb[1] & 0x1f) << 8 | tsb[2];
if((st = service_stream_find_fast((service_t*)t, pid)) != NULL)
if((st = service_stream_find((service_t*)t, pid)) != NULL)
ts_recv_packet0(t, st, tsb);
}
@ -310,7 +310,7 @@ ts_remux(mpegts_service_t *t, const uint8_t *src)
pktbuf_ref_dec(pb);
service_set_streaming_status_flags_fast((service_t*)t, TSS_PACKETS);
service_set_streaming_status_flags((service_t*)t, TSS_PACKETS);
sbuf_reset(sb);
}

View file

@ -679,7 +679,7 @@ service_stream_create(service_t *t, int pid,
* Find an elementary stream in a service
*/
elementary_stream_t *
service_stream_find(service_t *t, int pid)
service_stream_find_(service_t *t, int pid)
{
elementary_stream_t *st;
@ -796,7 +796,7 @@ service_servicetype_txt ( service_t *s )
*
*/
void
service_set_streaming_status_flags(service_t *t, int set)
service_set_streaming_status_flags_(service_t *t, int set)
{
int n;
streaming_message_t *sm;

View file

@ -450,16 +450,16 @@ service_instance_t *service_find_instance(struct service *s,
int *error,
int weight);
#define service_stream_find_fast(t, pid) ({ \
#define service_stream_find(t, pid) ({ \
elementary_stream_t *__es; \
if ((t)->s_last_pid != (pid)) \
__es = service_stream_find(t, pid); \
__es = service_stream_find_(t, pid); \
else \
__es = (t)->s_last_es; \
__es; \
})
elementary_stream_t *service_stream_find(service_t *t, int pid);
elementary_stream_t *service_stream_find_(service_t *t, int pid);
elementary_stream_t *service_stream_create(service_t *t, int pid,
streaming_component_type_t type);
@ -483,11 +483,11 @@ void service_destroy(service_t *t, int delconf);
void service_remove_subscriber(service_t *t, struct th_subscription *s,
int reason);
void service_set_streaming_status_flags(service_t *t, int flag);
void service_set_streaming_status_flags_(service_t *t, int flag);
#define service_set_streaming_status_flags_fast(t, flag) \
#define service_set_streaming_status_flags(t, flag) \
do { if (((t)->s_streaming_status & flag) != flag) \
service_set_streaming_status_flags(t, flag); } while (0)
service_set_streaming_status_flags_(t, flag); } while (0)
struct streaming_start;
struct streaming_start *service_build_stream_start(service_t *t);