]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Write bit depth for PCM audio
authorconrad <conrad@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Wed, 5 Sep 2007 00:23:31 +0000 (00:23 +0000)
committerconrad <conrad@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Wed, 5 Sep 2007 00:23:31 +0000 (00:23 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@10322 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavformat/matroskaenc.c

index 8828de93842ef6bb48720a12717a495078b12eae..3b5634fdbd1f53b7f0c86c687fd1a0776fb213ca 100644 (file)
@@ -366,6 +366,7 @@ static int mkv_write_tracks(AVFormatContext *s)
         AVCodecContext *codec = st->codec;
         offset_t subinfo, track;
         int native_id = 0;
+        int bit_depth = 0;
 
         track = start_ebml_master(pb, MATROSKA_ID_TRACKENTRY);
         put_ebml_uint (pb, MATROSKA_ID_TRACKNUMBER     , i + 1);
@@ -384,6 +385,19 @@ static int mkv_write_tracks(AVFormatContext *s)
             }
         }
 
+        switch (codec->codec_id) {
+            case CODEC_ID_PCM_S16LE:
+            case CODEC_ID_PCM_S16BE:
+            case CODEC_ID_PCM_U16LE:
+            case CODEC_ID_PCM_U16BE:
+                bit_depth = 16;
+                break;
+            case CODEC_ID_PCM_S8:
+            case CODEC_ID_PCM_U8:
+                bit_depth = 8;
+                break;
+        }
+
         // XXX: CodecPrivate for vorbis, theora, aac, native mpeg4, ...
         if (native_id) {
             if (codec->codec_id == CODEC_ID_VORBIS || codec->codec_id == CODEC_ID_THEORA) {
@@ -438,7 +452,9 @@ static int mkv_write_tracks(AVFormatContext *s)
                 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);
-                // XXX: output sample freq (for sbr) and bitdepth (for pcm)
+                // XXX: output sample freq (for sbr)
+                if (bit_depth)
+                    put_ebml_uint(pb, MATROSKA_ID_AUDIOBITDEPTH, bit_depth);
                 end_ebml_master(pb, subinfo);
                 break;