ref: 2dfc08f6b27c796f1b2b140f1e3b37d137cd260c
parent: 050366e484a2302927f9d537eea79250d30fa867
author: Sigrid Solveig Haflínudóttir <[email protected]>
date: Wed Feb 17 10:40:46 EST 2021
matroska: use OutputSamplingFrequency if defined, set default audio parameters
--- a/matroska.c
+++ b/matroska.c
@@ -175,7 +175,7 @@
if(e->tracktype == Etrackvideo)
Bprint(o, "%d\t%d", e->video.width, e->video.height);
else if(e->tracktype == Etrackaudio)
- Bprint(o, "%d\t%d", e->audio.channels, (int)e->audio.samplerate);
+ Bprint(o, "%d\t%d", e->audio.channels, (int)e->audio.outsamplerate);
else if(e->tracktype == Etracksubtitles)
Bprint(o, "%s", e->lang);
else
@@ -262,6 +262,9 @@
trackdump = e.tracknum;
else if(trackdump == Dumpaudio && e.tracktype == Etrackaudio)
trackdump = e.tracknum;
+
+ if(e.tracktype == Etrackaudio && e.audio.outsamplerate == 0)
+ e.audio.outsamplerate = e.audio.samplerate;
}
if(e.tracknum == trackdump)
memmove(&te, &e, sizeof(e));
@@ -269,8 +272,12 @@
e.comp.algo = -1;
e.timestampscale = timestampscale;
continue;
- }else if(el.id == EVideo || el.id == EAudio){
+ }else if(el.id == EVideo){
continue;
+ }else if(el.id == EAudio){
+ e.audio.samplerate = 8000;
+ e.audio.channels = 1;
+ continue;
}else if(el.id == EContentEncodings || el.id == EContentEncoding || el.id == EContentCompression){
continue;
}else if(el.id == EBlockGroup && !skipdata){
@@ -414,6 +421,8 @@
getnumber(ETimestampScale, timestampscale)
else
getfloat(ESamplingFrequency, e.audio.samplerate)
+ else
+ getfloat(EOutputSamplingFrequency, e.audio.outsamplerate)
else
getnumber(EChannels, e.audio.channels)
else
--- a/packet.h
+++ b/packet.h
@@ -36,6 +36,7 @@
}video;
struct {
float samplerate;
+ float outsamplerate;
int channels;
int bps;
}audio;