changeset 2452:1b6ea48f7f24 libavformat

Write wav header if there is no native audio codec ID
author conrad
date Wed, 05 Sep 2007 00:23:29 +0000
parents b66287f9c892
children 2965cc9aa501
files matroskaenc.c
diffstat 1 files changed, 14 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/matroskaenc.c	Wed Sep 05 00:23:27 2007 +0000
+++ b/matroskaenc.c	Wed Sep 05 00:23:29 2007 +0000
@@ -421,7 +421,20 @@
             case CODEC_TYPE_AUDIO:
                 put_ebml_uint(pb, MATROSKA_ID_TRACKTYPE, MATROSKA_TRACK_TYPE_AUDIO);
 
-                // XXX: A_MS/ACM
+                if (!native_id) {
+                    offset_t wav_header;
+                    // no mkv-specific ID, use ACM mode
+                    codec->codec_tag = codec_get_tag(codec_wav_tags, codec->codec_id);
+                    if (!codec->codec_tag) {
+                        av_log(s, AV_LOG_ERROR, "no codec id found for stream %d", i);
+                        return -1;
+                    }
+
+                    put_ebml_string(pb, MATROSKA_ID_CODECID, MATROSKA_CODEC_ID_AUDIO_ACM);
+                    wav_header = start_ebml_master(pb, MATROSKA_ID_CODECPRIVATE);
+                    put_wav_header(pb, codec);
+                    end_ebml_master(pb, wav_header);
+                }
                 subinfo = start_ebml_master(pb, MATROSKA_ID_TRACKAUDIO);
                 put_ebml_uint  (pb, MATROSKA_ID_AUDIOCHANNELS    , codec->channels);
                 put_ebml_float (pb, MATROSKA_ID_AUDIOSAMPLINGFREQ, codec->sample_rate);