/* TS muxing */
uint8_t *pm_pat;
uint8_t *pm_pmt;
- uint16_t pm_pmt_pid;
uint32_t pm_ic; // Injection counter
uint32_t pm_pc; // Packet counter
} pass_muxer_t;
int i;
int has_audio;
int has_video;
+ muxer_container_type_t mc;
const streaming_start_component_t *ssc;
-
+ const source_info_t *si = &ss->ss_si;
+
has_audio = 0;
has_video = 0;
has_audio |= SCT_ISAUDIO(ssc->ssc_type);
}
+ if(si->si_type == S_MPEG_TS)
+ mc = MC_MPEGTS;
+ else if(si->si_type == S_MPEG_PS)
+ mc = MC_MPEGPS;
+ else
+ mc = MC_UNKNOWN;
+
if(has_video)
- return muxer_container_mimetype(m->m_container, 1);
+ return muxer_container_mimetype(mc, 1);
else if(has_audio)
- return muxer_container_mimetype(m->m_container, 0);
+ return muxer_container_mimetype(mc, 0);
else
return muxer_container_mimetype(MC_UNKNOWN, 0);
}
pass_muxer_reconfigure(muxer_t* m, const struct streaming_start *ss)
{
pass_muxer_t *pm = (pass_muxer_t*)m;
+ const source_info_t *si = &ss->ss_si;
- if(pm->m_container == MC_MPEGTS) {
-
+ if(si->si_type == S_MPEG_TS) {
memset(pm->pm_pat, 0xff, 188);
pm->pm_pat[0] = 0x47;
pm->pm_pat[1] = 0x40;
pm->pm_pat[2] = 0x00;
pm->pm_pat[3] = 0x10;
pm->pm_pat[4] = 0x00;
- if(psi_build_pat(NULL, pm->pm_pat+5, 183, pm->pm_pmt_pid) < 0) {
+ if(psi_build_pat(NULL, pm->pm_pat+5, 183, ss->ss_pmt_pid) < 0) {
pm->m_errors++;
tvhlog(LOG_ERR, "pass", "%s: Unable to build pat", pm->pm_filename);
return -1;
memset(pm->pm_pmt, 0xff, 188);
pm->pm_pmt[0] = 0x47;
- pm->pm_pmt[1] = 0x40 | (pm->pm_pmt_pid >> 8);
- pm->pm_pmt[2] = 0x00 | (pm->pm_pmt_pid >> 0);
+ pm->pm_pmt[1] = 0x40 | (ss->ss_pmt_pid >> 8);
+ pm->pm_pmt[2] = 0x00 | (ss->ss_pmt_pid >> 0);
pm->pm_pmt[3] = 0x10;
pm->pm_pmt[4] = 0x00;
if(psi_build_pmt(ss, pm->pm_pmt+5, 183, ss->ss_pcr_pid) < 0) {
* Create a new passthrough muxer
*/
muxer_t*
-pass_muxer_create(service_t *s, muxer_container_type_t mc)
+pass_muxer_create(muxer_container_type_t mc)
{
pass_muxer_t *pm;
pm->m_close = pass_muxer_close;
pm->m_destroy = pass_muxer_destroy;
- if(s->s_type == SERVICE_TYPE_V4L) {
- pm->m_container = MC_MPEGPS;
- } else {
- pm->m_container = MC_MPEGTS;
- pm->pm_pmt_pid = s->s_pmt_pid;
- pm->pm_pat = malloc(188);
- pm->pm_pmt = malloc(188);
- }
+ pm->pm_pat = malloc(188);
+ pm->pm_pmt = malloc(188);
return (muxer_t *)pm;
}