summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/opus_parser.c2
-rw-r--r--libavformat/mpegts.c11
2 files changed, 7 insertions, 6 deletions
diff --git a/libavcodec/opus_parser.c b/libavcodec/opus_parser.c
index b128a40404..c30fd7bbd4 100644
--- a/libavcodec/opus_parser.c
+++ b/libavcodec/opus_parser.c
@@ -26,9 +26,9 @@
*/
#include "avcodec.h"
+#include "bytestream.h"
#include "opus.h"
#include "parser.h"
-#include "bytestream.h"
typedef struct OpusParseContext {
OpusContext ctx;
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index f7f484e133..f61388b5c1 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -1515,6 +1515,10 @@ static const uint8_t opus_coupled_stream_cnt[9] = {
1, 0, 1, 1, 2, 2, 2, 3, 3
};
+static const uint8_t opus_stream_cnt[9] = {
+ 1, 1, 1, 2, 2, 3, 4, 4, 5,
+};
+
static const uint8_t opus_channel_map[8][8] = {
{ 0 },
{ 0,1 },
@@ -1760,11 +1764,8 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type
return AVERROR_INVALIDDATA;
if (channel_config_code <= 0x8) {
st->codec->extradata[9] = channels = channel_config_code ? channel_config_code : 2;
- st->codec->extradata[18] = channels > 2;
- st->codec->extradata[19] = channels - opus_coupled_stream_cnt[channel_config_code];
- if (channel_config_code == 0) { /* Dual Mono */
- st->codec->extradata[18] = 255; /* Mapping */
- }
+ st->codec->extradata[18] = channel_config_code ? (channels > 2) : /* Dual Mono */ 255;
+ st->codec->extradata[19] = opus_stream_cnt[channel_config_code];
st->codec->extradata[20] = opus_coupled_stream_cnt[channel_config_code];
memcpy(&st->codec->extradata[21], opus_channel_map[channels - 1], channels);
} else {