Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
libav muxer: add AVMATROSKA muxer type
  • Loading branch information
perexg committed Oct 17, 2014
1 parent fa90b08 commit 1ae61a1
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 47 deletions.
2 changes: 1 addition & 1 deletion Makefile.ffmpeg
Expand Up @@ -57,7 +57,7 @@ EXTLIBS = libx264 libvorbis libvpx
COMPONENTS = avutil avformat avcodec swresample swscale avresample
DECODERS = mpeg2video mp2 ac3 eac3 h264 h264_vdpau aac aac_latm vorbis libvorbis
ENCODERS = mpeg2video mp2 libx264 libvpx_vp8 libvpx_vp9 aac libaacplus vorbis libvorbis
MUXERS = mpegts mpeg2dvd
MUXERS = mpegts mpeg2dvd matroska

LIBOGG = libogg-1.3.2
LIBOGG_TB = $(LIBOGG).tar.gz
Expand Down
54 changes: 12 additions & 42 deletions src/muxer.c
Expand Up @@ -40,6 +40,7 @@
static struct strtab container_audio_mime[] = {
{ "application/octet-stream", MC_UNKNOWN },
{ "audio/x-matroska", MC_MATROSKA },
{ "audio/x-matroska", MC_AVMATROSKA },
{ "audio/webm", MC_WEBM },
{ "audio/x-mpegts", MC_MPEGTS },
{ "audio/mpeg", MC_MPEGPS },
Expand All @@ -54,6 +55,7 @@ static struct strtab container_audio_mime[] = {
static struct strtab container_video_mime[] = {
{ "application/octet-stream", MC_UNKNOWN },
{ "video/x-matroska", MC_MATROSKA },
{ "video/x-matroska", MC_AVMATROSKA },
{ "video/webm", MC_WEBM },
{ "video/x-mpegts", MC_MPEGTS },
{ "video/mpeg", MC_MPEGPS },
Expand All @@ -66,13 +68,14 @@ static struct strtab container_video_mime[] = {
* Name of the container
*/
static struct strtab container_name[] = {
{ "unknown", MC_UNKNOWN },
{ "matroska", MC_MATROSKA },
{ "webm", MC_WEBM },
{ "mpegts", MC_MPEGTS },
{ "mpegps", MC_MPEGPS },
{ "pass", MC_PASS },
{ "raw", MC_RAW },
{ "unknown", MC_UNKNOWN },
{ "matroska", MC_MATROSKA },
{ "webm", MC_WEBM },
{ "mpegts", MC_MPEGTS },
{ "mpegps", MC_MPEGPS },
{ "pass", MC_PASS },
{ "raw", MC_RAW },
{ "avmatroska", MC_AVMATROSKA },
};


Expand All @@ -87,6 +90,7 @@ static struct strtab container_audio_file_suffix[] = {
{ "mpeg", MC_MPEGPS },
{ "bin", MC_PASS },
{ "bin", MC_RAW },
{ "mka", MC_AVMATROSKA },
};


Expand All @@ -101,6 +105,7 @@ static struct strtab container_video_file_suffix[] = {
{ "mpeg", MC_MPEGPS },
{ "bin", MC_PASS },
{ "bin", MC_RAW },
{ "mkv", MC_AVMATROSKA },
};


Expand Down Expand Up @@ -159,41 +164,6 @@ muxer_container_type2txt(muxer_container_type_t mc)
}


#if 0
/**
* Get a list of supported containers
*/
static int
muxer_container_add(htsmsg_t *array, int type, const char *text)
{
htsmsg_t *mc;

mc = htsmsg_create_map();
htsmsg_add_str(mc, "name", muxer_container_type2txt(type));
htsmsg_add_str(mc, "description", text);
htsmsg_add_msg(array, NULL, mc);
return 1;
}

int
muxer_container_list(htsmsg_t *array)
{
int c;

c = muxer_container_add(array, MC_MATROSKA, "Matroska (mkv)");
c += muxer_container_add(array, MC_PASS, "Same as source (pass through)");

#if ENABLE_LIBAV
c += muxer_container_add(array, MC_MPEGTS, "MPEG-TS");

c += muxer_container_add(array, MC_MPEGPS, "MPEG-PS (DVD)");
#endif

return c;
}
#endif


/**
* Convert a container name to a container type
*/
Expand Down
1 change: 1 addition & 0 deletions src/muxer.h
Expand Up @@ -31,6 +31,7 @@ typedef enum {
MC_PASS = 4,
MC_RAW = 5,
MC_WEBM = 6,
MC_AVMATROSKA = 7,
} muxer_container_type_t;

typedef enum {
Expand Down
10 changes: 10 additions & 0 deletions src/muxer/muxer_libav.c
Expand Up @@ -77,6 +77,7 @@ lav_muxer_add_stream(lav_muxer_t *lm,

switch(lm->m_config.m_type) {
case MC_MATROSKA:
case MC_AVMATROSKA:
st->time_base.num = 1000000;
st->time_base.den = 1;
break;
Expand Down Expand Up @@ -110,8 +111,10 @@ lav_muxer_add_stream(lav_muxer_t *lm,
c->sample_rate = sri_to_rate(ssc->ssc_sri);
c->channels = ssc->ssc_channels;

#if 0
c->time_base.num = 1;
c->time_base.den = c->sample_rate;
#endif

av_dict_set(&st->metadata, "language", ssc->ssc_lang, 0);

Expand All @@ -120,8 +123,10 @@ lav_muxer_add_stream(lav_muxer_t *lm,
c->width = ssc->ssc_width;
c->height = ssc->ssc_height;

#if 0
c->time_base.num = 1;
c->time_base.den = 25;
#endif

c->sample_aspect_ratio.num = ssc->ssc_aspect_num;
c->sample_aspect_ratio.den = ssc->ssc_aspect_den;
Expand Down Expand Up @@ -152,6 +157,7 @@ lav_muxer_support_stream(muxer_container_type_t mc,

switch(mc) {
case MC_MATROSKA:
case MC_AVMATROSKA:
ret |= SCT_ISAUDIO(type);
ret |= SCT_ISVIDEO(type);
ret |= SCT_ISSUBTITLE(type);
Expand Down Expand Up @@ -503,6 +509,10 @@ lav_muxer_create(const muxer_config_t *m_cfg)
case MC_MPEGPS:
mux_name = "dvd";
break;
case MC_MATROSKA:
case MC_AVMATROSKA:
mux_name = "matroska";
break;
default:
mux_name = muxer_container_type2txt(m_cfg->m_type);
break;
Expand Down
10 changes: 6 additions & 4 deletions src/profile.c
Expand Up @@ -641,10 +641,11 @@ profile_class_mc_list ( void *o )
{
static const struct strtab tab[] = {
{ "Not set", MC_UNKNOWN },
{ "Matroska (mkv)", MC_MATROSKA, },
{ "WEBM", MC_WEBM, },
{ "MPEG-TS", MC_MPEGTS },
{ "MPEG-PS (DVD)", MC_MPEGPS },
{ "Matroska (mkv) /built-in", MC_MATROSKA, },
{ "WEBM /built-in", MC_WEBM, },
{ "MPEG-TS /av-lib", MC_MPEGTS },
{ "MPEG-PS (DVD) /av-lib", MC_MPEGPS },
{ "Matroska (mkv) /av-lib", MC_AVMATROSKA },
};
return strtab2htsmsg(tab);
}
Expand Down Expand Up @@ -884,6 +885,7 @@ profile_transcode_mc_valid(int mc)
case MC_WEBM:
case MC_MPEGTS:
case MC_MPEGPS:
case MC_AVMATROSKA:
return 1;
default:
return 0;
Expand Down

0 comments on commit 1ae61a1

Please sign in to comment.