Commit 44008871 authored by David Conrad's avatar David Conrad

Write bit depth for PCM audio

Originally committed as revision 10322 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 1a302a5c
...@@ -366,6 +366,7 @@ static int mkv_write_tracks(AVFormatContext *s) ...@@ -366,6 +366,7 @@ static int mkv_write_tracks(AVFormatContext *s)
AVCodecContext *codec = st->codec; AVCodecContext *codec = st->codec;
offset_t subinfo, track; offset_t subinfo, track;
int native_id = 0; int native_id = 0;
int bit_depth = 0;
track = start_ebml_master(pb, MATROSKA_ID_TRACKENTRY); track = start_ebml_master(pb, MATROSKA_ID_TRACKENTRY);
put_ebml_uint (pb, MATROSKA_ID_TRACKNUMBER , i + 1); put_ebml_uint (pb, MATROSKA_ID_TRACKNUMBER , i + 1);
...@@ -384,6 +385,19 @@ static int mkv_write_tracks(AVFormatContext *s) ...@@ -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, ... // XXX: CodecPrivate for vorbis, theora, aac, native mpeg4, ...
if (native_id) { if (native_id) {
if (codec->codec_id == CODEC_ID_VORBIS || codec->codec_id == CODEC_ID_THEORA) { if (codec->codec_id == CODEC_ID_VORBIS || codec->codec_id == CODEC_ID_THEORA) {
...@@ -438,7 +452,9 @@ static int mkv_write_tracks(AVFormatContext *s) ...@@ -438,7 +452,9 @@ static int mkv_write_tracks(AVFormatContext *s)
subinfo = start_ebml_master(pb, MATROSKA_ID_TRACKAUDIO); subinfo = start_ebml_master(pb, MATROSKA_ID_TRACKAUDIO);
put_ebml_uint (pb, MATROSKA_ID_AUDIOCHANNELS , codec->channels); put_ebml_uint (pb, MATROSKA_ID_AUDIOCHANNELS , codec->channels);
put_ebml_float (pb, MATROSKA_ID_AUDIOSAMPLINGFREQ, codec->sample_rate); 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); end_ebml_master(pb, subinfo);
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment