[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mplayer-dev-eng
Subject:    [MPlayer-dev-eng] [patch] Support EAC3 in MKV container
From:       Andrew de Quincey <adq_dvb () lidskialf ! net>
Date:       2009-01-25 20:18:03
Message-ID: 20090125201803.190127yyopc29ipo () lidskialf ! net
[Download RAW message or body]

This message is in MIME format.


Hi, I've just tried muxing an EAC3 track into an MKV using mvktoolsnix  
2.4.1. It muxed it ok, but mplayer rejects it with an unknown codec  
"A_EAC3". The support for this codec was added to mkvtoolsnix on  
2007-03-02  (see  
http://www.bunkus.org/videotools/mkvtoolnix/doc/ChangeLog).

The attached patch adds support for new "EAC3" stream type in the mkv  
container. Note: I originally tried simply setting it to the mplayer  
standard AC3 a_formattag 0x2000, but this does not work, so I have  
used the EAC3 fourcc instead.

Unfortunately the channel ordering is /definitely/ screwed (all  
dialogue is coming from the rear left + front right speakers); I'll  
investigate this issue later by comparing with a player under windows.


["eac3-in-mkv.patch" (text/x-patch)]

Index: mplayer-trunk/libmpdemux/matroska.h
===================================================================
--- mplayer-trunk/libmpdemux/matroska.h	(revision 28344)
+++ mplayer-trunk/libmpdemux/matroska.h	(working copy)
@@ -18,6 +18,7 @@
 #define MKV_A_AAC_4LTP   "A_AAC/MPEG4/LTP"
 #define MKV_A_AAC        "A_AAC"
 #define MKV_A_AC3        "A_AC3"
+#define MKV_A_EAC3       "A_EAC3"
 #define MKV_A_DTS        "A_DTS"
 #define MKV_A_MP2        "A_MPEG/L2"
 #define MKV_A_MP3        "A_MPEG/L3"
Index: mplayer-trunk/libmpdemux/demux_mkv.c
===================================================================
--- mplayer-trunk/libmpdemux/demux_mkv.c	(revision 28344)
+++ mplayer-trunk/libmpdemux/demux_mkv.c	(working copy)
@@ -1707,6 +1707,8 @@
         track->a_formattag = 0x0055;
       else if (!strncmp(track->codec_id, MKV_A_AC3, strlen(MKV_A_AC3)))
         track->a_formattag = 0x2000;
+      else if (!strncmp(track->codec_id, MKV_A_EAC3, strlen(MKV_A_EAC3)))
+        track->a_formattag = mmioFOURCC('E', 'A', 'C', '3');
       else if (!strcmp(track->codec_id, MKV_A_DTS))
         track->a_formattag = 0x2001;
       else if (!strcmp(track->codec_id, MKV_A_PCM) ||
@@ -1789,7 +1791,8 @@
       sh_a->wf->nBlockAlign = 1152;
     }
   else if ((track->a_formattag == 0x2000) || /* AC3 */
-           (track->a_formattag == 0x2001)) /* DTS */
+           (track->a_formattag == 0x2001) || /* DTS */
+           (track->a_formattag == mmioFOURCC('E', 'A', 'C', '3')))
     {
       free(sh_a->wf);
       sh_a->wf = NULL;

_______________________________________________
MPlayer-dev-eng mailing list
MPlayer-dev-eng@mplayerhq.hu
https://lists.mplayerhq.hu/mailman/listinfo/mplayer-dev-eng

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic