#define ESF_MASK_AUDIO \
(SCT_MASK(SCT_MPEG2AUDIO) | SCT_MASK(SCT_AC3) | SCT_MASK(SCT_AAC) | \
SCT_MASK(SCT_EAC3) | SCT_MASK(SCT_MP4A) | SCT_MASK(SCT_VORBIS) | \
- SCT_MASK(SCT_OPUS) | SCT_MASK(SCT_FLAC))
+ SCT_MASK(SCT_OPUS) | SCT_MASK(SCT_FLAC) | SCT_MASK(SCT_AC4))
#define ESF_MASK_TELETEXT \
SCT_MASK(SCT_TELETEXT)
SCT_THEORA,
SCT_OPUS,
SCT_FLAC,
- SCT_LAST = SCT_FLAC
+ SCT_AC4,
+ SCT_LAST = SCT_AC4
};
#define SCT_MASK(t) (1 << (t))
#define SCT_ISAUDIO(t) ((t) == SCT_MPEG2AUDIO || (t) == SCT_AC3 || \
(t) == SCT_AAC || (t) == SCT_MP4A || \
(t) == SCT_EAC3 || (t) == SCT_VORBIS || \
- (t) == SCT_OPUS || (t) == SCT_FLAC)
+ (t) == SCT_OPUS || (t) == SCT_FLAC || \
+ (t) == SCT_AC4)
#define SCT_ISAV(t) (SCT_ISVIDEO(t) || SCT_ISAUDIO(t))
#define DVB_DESC_CRID 0x76
#define DVB_DESC_EAC3 0x7A
#define DVB_DESC_AAC 0x7C
+#define DVB_DESC_AC4 0x7F
#define DVB_DESC_BSKYB_LCN 0xB1
hts_stream_type = SCT_EAC3;
break;
+ case DVB_DESC_AC4:
+ if(estype == 0x06 || estype == 0x81)
+ hts_stream_type = SCT_AC4;
+ break;
+
case DVB_DESC_ANCILLARY_DATA:
if(dlen < 1)
break;
case SCT_EAC3:
codec_id = AV_CODEC_ID_EAC3;
break;
+ // Enable once supported, see https://trac.ffmpeg.org/ticket/8349
+ // case SCT_AC4:
+ // codec_id = AV_CODEC_ID_AC4;
+ // break;
case SCT_MP4A:
case SCT_AAC:
codec_id = AV_CODEC_ID_AAC;
case AV_CODEC_ID_EAC3:
type = SCT_EAC3;
break;
+ // Enable once supported, see https://trac.ffmpeg.org/ticket/8349
+ // case AV_CODEC_ID_AC4:
+ // type = SCT_AC4;
+ // break;
case AV_CODEC_ID_AAC:
type = SCT_AAC;
break;
{ "audio/mpeg", MC_MPEGPS },
{ "audio/mpeg", MC_MPEG2AUDIO },
{ "audio/ac3", MC_AC3 },
+ { "audio/ac4", MC_AC4 },
{ "audio/aac", MC_AAC },
{ "audio/aac", MC_MP4A },
{ "audio/ogg", MC_VORBIS },
{ "aac", MC_AAC },
{ "mp4a", MC_MP4A },
{ "oga", MC_VORBIS },
+ { "ac4", MC_AC4 },
};
{ "aac", MC_AAC },
{ "mp4a", MC_MP4A },
{ "oga", MC_VORBIS },
+ { "ac4", MC_AC4 },
};
MC_AC3 = 11,
MC_AAC = 12,
MC_MP4A = 13,
- MC_VORBIS = 14
+ MC_VORBIS = 14,
+ MC_AC4 = 15
} muxer_container_type_t;
typedef enum {
case SCT_AAC: mc = MC_AAC; break;
case SCT_MP4A: mc = MC_MP4A; break;
case SCT_VORBIS: mc = MC_VORBIS; break;
+ case SCT_AC4: mc = MC_AC4; break;
default: break;
}
return mc;
m_cfg->m_type != MC_AC3 &&
m_cfg->m_type != MC_AAC &&
m_cfg->m_type != MC_MP4A &&
- m_cfg->m_type != MC_VORBIS)
+ m_cfg->m_type != MC_VORBIS &&
+ m_cfg->m_type != MC_AC4)
return NULL;
am = calloc(1, sizeof(audioes_muxer_t));
ret |= (type == SCT_AAC);
ret |= (type == SCT_MP4A);
ret |= (type == SCT_EAC3);
+ ret |= (type == SCT_AC4);
//Some pids lack pts, disable for now
//ret |= (type == SCT_TELETEXT);
ret |= (type == SCT_AAC);
ret |= (type == SCT_MP4A);
ret |= (type == SCT_EAC3);
+ ret |= (type == SCT_AC4);
break;
default:
codec_id = "A_EAC3";
break;
+ case SCT_AC4:
+ tracktype = 2;
+ codec_id = "A_AC4";
+ break;
+
case SCT_MP4A:
case SCT_AAC:
tracktype = 2;
{ N_("AAC audio"), MC_AAC },
{ N_("MP4 audio"), MC_MP4A },
{ N_("Vorbis audio"), MC_VORBIS },
+ { N_("AC-4 audio"), MC_AC4, },
};
return strtab2htsmsg(tab, 1, lang);
}
{ "EAC3", "EAC3" },
{ "VORBIS", "VORBIS" },
{ "OPUS", "OPUS" },
+ { "AC-4", "AC-4" },
};
static int
case MC_MPEGPS:
case MC_MPEG2AUDIO:
case MC_AC3:
+ case MC_AC4:
case MC_AAC:
case MC_VORBIS:
case MC_AVMATROSKA:
{ "THEORA", SCT_THEORA },
{ "OPUS", SCT_OPUS },
{ "FLAC", SCT_FLAC },
+ { "AC-4", SCT_AC4 },
};
/**