From 885d330ee66302755ed23b2f0f3f9e5816f48b70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 28 Feb 2020 14:23:51 +0200 Subject: [PATCH] qtdemux: Try to infer useful header values for raw audio if the sound sample descriptions contain zero values --- gst/isomp4/qtdemux.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c index 592fa2e968..11e83da91d 100644 --- a/gst/isomp4/qtdemux.c +++ b/gst/isomp4/qtdemux.c @@ -12163,6 +12163,33 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) break; } /* fix up any invalid header information from above */ + case FOURCC_twos: + case FOURCC_sowt: + case FOURCC_raw_: + case FOURCC_lpcm: + /* Sometimes these are set to 0 in the sound sample descriptions so + * let's try to infer useful values from the other information we + * have available */ + if (entry->bytes_per_sample == 0) + entry->bytes_per_sample = + entry->bytes_per_frame / entry->n_channels; + if (entry->bytes_per_sample == 0) + entry->bytes_per_sample = samplesize / 8; + + if (entry->bytes_per_frame == 0) + entry->bytes_per_frame = + entry->bytes_per_sample * entry->n_channels; + + if (entry->bytes_per_packet == 0) + entry->bytes_per_packet = entry->bytes_per_sample; + + if (entry->samples_per_frame == 0) + entry->samples_per_frame = entry->n_channels; + + if (entry->samples_per_packet == 0) + entry->samples_per_packet = entry->samples_per_frame; + + break; case FOURCC_in24: case FOURCC_in32: case FOURCC_fl32: