shithub: mcfs

Download patch

ref: 2dfc08f6b27c796f1b2b140f1e3b37d137cd260c
parent: 050366e484a2302927f9d537eea79250d30fa867
author: Sigrid Solveig Haflínudóttir <ftrvxmtrx@gmail.com>
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;