diff --git a/src/input/mpegts.h b/src/input/mpegts.h index 136d773c..a1d1223e 100644 --- a/src/input/mpegts.h +++ b/src/input/mpegts.h @@ -467,7 +467,6 @@ struct mpegts_mux void (*mm_config_save) (mpegts_mux_t *mm); void (*mm_display_name) (mpegts_mux_t*, char *buf, size_t len); int (*mm_is_enabled) (mpegts_mux_t *mm); - int (*mm_start) (mpegts_mux_t *mm, mpegts_input_t *mi, const char *r, int w, int flags); void (*mm_stop) (mpegts_mux_t *mm, int force, int reason); void (*mm_open_table) (mpegts_mux_t*,mpegts_table_t*,int subscribe); void (*mm_close_table) (mpegts_mux_t*,mpegts_table_t*); diff --git a/src/input/mpegts/mpegts_mux.c b/src/input/mpegts/mpegts_mux.c index 59eddcc7..29fe20bc 100644 --- a/src/input/mpegts/mpegts_mux.c +++ b/src/input/mpegts/mpegts_mux.c @@ -638,171 +638,6 @@ mpegts_mux_create_instances ( mpegts_mux_t *mm ) { } -static int -mpegts_mux_start1( mpegts_mux_instance_t *mmi ) -{ - char buf[256], buf2[256]; - - if (mpegts_mux_instance_start(&mmi)) { - mpegts_mux_nice_name(mmi->mmi_mux, buf, sizeof(buf)); - mmi->mmi_input->mi_display_name(mmi->mmi_input, buf2, sizeof(buf2)); - tvhwarn("mpegts", "%s - failed to start on %s, try another", buf, buf2); - return 1; - } - return 0; -} - -static int -mpegts_mux_start - ( mpegts_mux_t *mm, mpegts_input_t *_mi, const char *reason, int weight, int flags ) -{ - int havefree = 0, enabled = 0, index, index2, weight2, count, size = 0; - char buf[256]; - mpegts_input_t *mi; - mpegts_mux_t *mm2; - mpegts_mux_instance_t *mmi, **all; - int64_t aweight, *allw; - int e, j; - - mpegts_mux_nice_name(mm, buf, sizeof(buf)); - tvhtrace("mpegts", "%s - starting for '%s' (weight %d, flags %04X)", - buf, reason, weight, flags); - - /* Disabled */ - if (!mm->mm_is_enabled(mm)) { - tvhwarn("mpegts", "%s - not enabled", buf); - return SM_CODE_MUX_NOT_ENABLED; - } - - /* Already tuned */ - if (mm->mm_active) { - tvhtrace("mpegts", "%s - already active", buf); - mpegts_mux_scan_active(mm, buf, mm->mm_active->mmi_input); - return 0; - } - - /* Create mux instances (where needed) */ - mm->mm_create_instances(mm); - if (!LIST_FIRST(&mm->mm_instances)) { - tvhtrace("mpegts", "%s - has no instances, tuners enabled?", buf); - return SM_CODE_NO_VALID_ADAPTER; - } - - /* Get the count of instances */ - LIST_FOREACH(mmi, &mm->mm_instances, mmi_mux_link) - size++; - all = alloca(sizeof(mpegts_mux_instance_t *) * size); - allw = alloca(sizeof(int64_t) * size); - - /* Calculate priority+weight and sort */ - count = 0; - LIST_FOREACH(mmi, &mm->mm_instances, mmi_mux_link) { - mi = mmi->mmi_input; - mm2 = mmi->mmi_mux; - if (_mi && mi != _mi) continue; - e = mi->mi_is_enabled(mi, mm, flags); - tvhtrace("mpegts", "%s - mmi %p enabled %d", buf, mmi, e); - if (!e) continue; - enabled = 1; - - /* Already live? Try it... */ - if (e && mm2->mm_active == mmi) { - if (!mpegts_mux_start1(mmi)) - return 0; - continue; - } - - if (mmi->mmi_tune_failed) continue; - - tvhtrace("mpegts", "%s - found mmi %p", buf, mmi); - - aweight = ((int64_t )mi->mi_get_priority(mi, mm2, flags) << 32) | - mi->mi_get_weight(mi, flags); - - for (index = 0; index < count; index++) - if (allw[index] >= aweight) - break; - - for (j = count; j > index; j--) { - allw[j] = allw[j - 1]; - all [j] = all [j - 1]; - } - - all [index] = mmi; - allw[index] = aweight; - count++; - } - -#if ENABLE_TRACE - for (index = 0; index < count; index++) { - if (all[index]) { - mi = all[index]->mmi_input; - char buf2[256]; - mi->mi_display_name(mi, buf2, sizeof(buf2)); - tvhtrace("mpegts", "%s - %i [%s]: prio %li weight %li", buf, index, buf2, - (long)(allw[index] >> 32), (long)(allw[index] & 0xffffffff)); - } - } -#endif - - /* Try free inputs */ - for (index = count - 1; index >= 0; index--) { - mmi = all[index]; - mi = mmi->mmi_input; - if (mi->mi_is_free(mi)) { - all[index] = NULL; - havefree = 1; - tvhtrace("mpegts", "%s - found mmi %p to boot (free)", buf, mmi); - if (!mpegts_mux_start1(mmi)) - return 0; - } - } - - /* Try the lowest weight */ - for (index = 0, index2 = -1, weight2 = weight; index < count; index++) { - if (all[index] && weight2 > (allw[index] & 0xffffffff)) { - weight2 = allw[index] & 0xffffffff; - index2 = index; - } - } - - if (index2 >= 0) { - mmi = all[index2]; - all[index2] = NULL; - tvhtrace("mpegts", "%s - found mmi %p to boot (lowest)", buf, mmi); - if (!mpegts_mux_start1(mmi)) - return 0; - } - - /* Try the all lowest weights */ - for (index = 0; index < count; index++) { - if (all[index] && weight > (allw[index] & 0xffffffff)) { - mmi = all[index]; - all[index] = NULL; - tvhtrace("mpegts", "%s - found mmi %p to boot", buf, mmi); - if (!mpegts_mux_start1(mmi)) - return 0; - } - } - - LIST_FOREACH(mmi, &mm->mm_instances, mmi_mux_link) { - if (!mmi->mmi_tune_failed) { - if (!enabled) { - tvhdebug("mpegts", "%s - no tuners enabled", buf); - return SM_CODE_NO_VALID_ADAPTER; - } else if (havefree) { - tvhdebug("mpegts", "%s - no valid tuner available", buf); - return SM_CODE_NO_VALID_ADAPTER; - } else { - tvhdebug("mpegts", "%s - no free tuner available", buf); - return SM_CODE_NO_FREE_ADAPTER; - } - } - } - tvhdebug("mpegts", "%s - tuning failed, invalid config?", buf); - return SM_CODE_TUNING_FAILED; -} - static int mpegts_mux_has_subscribers ( mpegts_mux_t *mm, const char *name ) { @@ -1158,7 +993,6 @@ mpegts_mux_create0 mm->mm_is_epg = mpegts_mux_is_epg; /* Start/stop */ - mm->mm_start = mpegts_mux_start; mm->mm_stop = mpegts_mux_stop; mm->mm_create_instances = mpegts_mux_create_instances;