Changed the PID lookup and other optimizations
Followed the Adam's advice to remove _fast functions.
This commit is contained in:
parent
c6446b1eef
commit
7f03d0350b
7 changed files with 24 additions and 24 deletions
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue