};
#define MM_EPG_LAST MM_EPG_ONLY_OPENTV_SKY_AUSAT
+enum mpegts_mux_ac3_flag
+{
+ MM_AC3_STANDARD,
+ MM_AC3_PMT_06,
+ MM_AC3_PMT_N05,
+};
+
typedef struct tsdebug_packet {
TAILQ_ENTRY(tsdebug_packet) link;
uint8_t pkt[188];
int mm_enabled;
int mm_epg;
char *mm_charset;
- int mm_pmt_06_ac3;
+ int mm_pmt_ac3;
/*
* TSDEBUG
case 0x06:
/* 0x06 is Chinese Cable TV AC-3 audio track */
/* but mark it so only when no more descriptors exist */
- if (dllen > 1 || !mux || !mux->mm_pmt_06_ac3)
+ if (dllen > 1 || !mux || mux->mm_pmt_ac3 != MM_AC3_PMT_06)
break;
/* fall through to SCT_AC3 */
case 0x81:
break;
case DVB_DESC_REGISTRATION:
- if(dlen == 4 &&
+ if(mux->mm_pmt_ac3 != MM_AC3_PMT_N05 && dlen == 4 &&
ptr[0] == 'A' && ptr[1] == 'C' && ptr[2] == '-' && ptr[3] == '3')
hts_stream_type = SCT_AC3;
/* seen also these formats: */
return strtab2htsmsg(tab);
}
+static htsmsg_t *
+mpegts_mux_ac3_list ( void *o )
+{
+ static const struct strtab tab[] = {
+ { "Standard", MM_AC3_STANDARD },
+ { "AC-3 = descriptor 6", MM_AC3_PMT_06 },
+ { "Ignore descriptor 5", MM_AC3_PMT_N05 },
+ };
+ return strtab2htsmsg(tab);
+}
+
const idclass_t mpegts_mux_class =
{
.ic_class = "mpegts_mux",
.get = mpegts_mux_class_get_num_chn,
},
{
- .type = PT_BOOL,
+ .type = PT_INT,
.id = "pmt_06_ac3",
- .name = "PMT Descriptor 0x06 = AC-3",
- .off = offsetof(mpegts_mux_t, mm_pmt_06_ac3),
- .opts = PO_ADVANCED,
+ .name = "AC-3 Detection",
+ .off = offsetof(mpegts_mux_t, mm_pmt_ac3),
+ .def.i = MM_EPG_ENABLE,
+ .list = mpegts_mux_ac3_list,
},
{}
}