[PR] avformat/rakidec: add UbiArt RAKI demuxer (PR #24317)

MrKev312 via ffmpeg-devel <[email protected]>
Newsgroups gmane.comp.video.ffmpeg.devel
Message-ID <[email protected]>
PR #24317 opened by MrKev312
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24317
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24317.patch

# Summary of changes

This pull request adds demuxing support for UbiArt RAKI audio files used across several platforms and console generations.

The demuxer:

* handles both little- and big-endian RAKI variants and validates their chunk tables and payload bounds;
* exposes little- and big-endian PCM, Microsoft ADPCM, Nintendo DSP ADPCM, MP3, Opus, and XMA2 payloads using FFmpeg's existing codec IDs;
* supports both interleaved and separately stored stereo Nintendo DSP blocks;
* handles both observed PlayStation 3 MP3 header layouts, including an optional leading word;
* reconstructs standard Opus extradata and removes the Nintendo per-packet size and final-range framing from Switch Opus packets;
* reports packet timestamps, durations, initial padding, and trailing padding where the container provides enough information.

Nine demux-only FATE tests cover the supported layouts. They use `framecrc` with stream copy, so they exercise the demuxer and emitted packet data without requiring any audio decoder. A minimal build with no decoders enabled passes all nine tests.

The Switch Opus fixture additionally verifies every emitted raw Opus packet after the Nintendo framing is removed. All 13 packet sizes and checksums match an independent parse of the framed payload byte-for-byte. The planar Nintendo DSP fixtures likewise verify the interleaving performed by the demuxer, and the two PlayStation 3 MP3 layouts produce identical MP3 packet data.

The FATE samples contain short synthetic stereo tones and no game audio. The samples are split between this pull request and a follow-up comment due to the attachment limit.

```fate-samples
raki/cafe-interleaved.raki
raki/cafe-planar.raki
raki/nx-opus.raki
raki/ps3-mp3.raki
raki/ps3-mp3-prefixed.raki
raki/wii-pcm.raki
raki/win-ms-adpcm.raki
raki/win-pcm.raki
raki/x360-xma2.raki
```

The first five samples are attached here; the remaining four are attached in the follow-up comment below.

## Testing

* clean build with the RAKI demuxer, framecrc muxer, file and pipe protocols, and no decoders enabled;
* all nine `fate-raki` tests pass;
* `git diff --check` passes.

I am prepared to maintain the RAKI demuxer.



>From f475935bc2a941fa213bec11b8c7b74dd39997ed Mon Sep 17 00:00:00 2001
From: Martijn Brouwer <[email protected]>
Date: Fri, 28 Aug 2026 22:55:47 +0200
Subject: [PATCH 1/2] avformat/rakidec: add UbiArt RAKI demuxer

Support PCM, Microsoft and Nintendo ADPCM, MP3, Nintendo Opus, and XMA2 payloads used across UbiArt platforms.

Signed-off-by: Martijn Brouwer <[email protected]>
---
 Changelog                 |   1 +
 doc/general_contents.texi |   2 +
 libavformat/Makefile      |   1 +
 libavformat/allformats.c  |   1 +
 libavformat/rakidec.c     | 938 ++++++++++++++++++++++++++++++++++++++
 5 files changed, 943 insertions(+)
 create mode 100644 libavformat/rakidec.c

diff --git a/Changelog b/Changelog
index 38f1e10263..cbf293e3e5 100644
--- a/Changelog
+++ b/Changelog
@@ -10,6 +10,7 @@ version <next>:
 - latticepal filter
 - DVD-Audio LPCM decoder and demuxing support
 - AVFoundation input device selection by unique ID and USB serial number
+- UbiArt RAKI audio demuxer
 
 
 version 9.0:
diff --git a/doc/general_contents.texi b/doc/general_contents.texi
index d81392e03f..5bc351675e 100644
--- a/doc/general_contents.texi
+++ b/doc/general_contents.texi
@@ -670,6 +670,8 @@ library:
 @item TechnoTrend PVA           @tab   @tab X
     @tab Used by TechnoTrend DVB PCI boards.
 @item QCP                       @tab   @tab X
+@item RAKI                      @tab   @tab X
+    @tab Audio format used by UbiArt games.
 @item raw ADTS (AAC)            @tab X @tab X
 @item raw AC-3                  @tab X @tab X
 @item raw AMR-NB                @tab   @tab X
diff --git a/libavformat/Makefile b/libavformat/Makefile
index 038e0afd41..71bea5c5d5 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -515,6 +515,7 @@ OBJS-$(CONFIG_PVF_DEMUXER)               += pvfdec.o pcm.o
 OBJS-$(CONFIG_QCP_DEMUXER)               += qcp.o
 OBJS-$(CONFIG_QOA_DEMUXER)               += qoadec.o
 OBJS-$(CONFIG_R3D_DEMUXER)               += r3d.o
+OBJS-$(CONFIG_RAKI_DEMUXER)              += rakidec.o riffdec.o
 OBJS-$(CONFIG_RAWVIDEO_DEMUXER)          += rawvideodec.o
 OBJS-$(CONFIG_RAWVIDEO_MUXER)            += rawenc.o
 OBJS-$(CONFIG_RCWT_DEMUXER)              += rcwtdec.o subtitles.o
diff --git a/libavformat/allformats.c b/libavformat/allformats.c
index e121c7441c..b7d4e78e8a 100644
--- a/libavformat/allformats.c
+++ b/libavformat/allformats.c
@@ -398,6 +398,7 @@ extern const FFInputFormat  ff_pvf_demuxer;
 extern const FFInputFormat  ff_qcp_demuxer;
 extern const FFInputFormat  ff_qoa_demuxer;
 extern const FFInputFormat  ff_r3d_demuxer;
+extern const FFInputFormat  ff_raki_demuxer;
 extern const FFInputFormat  ff_rawvideo_demuxer;
 extern const FFOutputFormat ff_rawvideo_muxer;
 extern const FFInputFormat  ff_rcwt_demuxer;
diff --git a/libavformat/rakidec.c b/libavformat/rakidec.c
new file mode 100644
index 0000000000..3ec7017d7e
--- /dev/null
+++ b/libavformat/rakidec.c
@@ -0,0 +1,938 @@
+/*
+ * UbiArt RAKI audio demuxer
+ * Copyright (c) 2026 Martijn Brouwer
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "libavutil/common.h"
+#include "libavutil/intreadwrite.h"
+
+#include "avformat.h"
+#include "avio.h"
+#include "avio_internal.h"
+#include "demux.h"
+#include "id3v2.h"
+#include "internal.h"
+#include "riff.h"
+
+#define RAKI_MAX_CHUNKS 64
+#define RAKI_OPUS_HEAD_SIZE 19
+
+typedef struct RakiChunk {
+    int64_t offset;
+    int64_t size;
+    int present;
+} RakiChunk;
+
+enum RakiPacketType {
+    RAKI_PACKETS_CONTIGUOUS,
+    RAKI_PACKETS_DSP_PLANAR,
+    RAKI_PACKETS_NX_OPUS,
+};
+
+typedef struct RakiDemuxContext {
+    int big_endian;
+    int packet_type;
+    int ps3_mp3;
+    int64_t file_size;
+    int64_t raki_offset;
+    int64_t data_offset;
+    int64_t data_end;
+    int64_t next_pts;
+    int64_t expected_samples;
+    int packet_size;
+
+    RakiChunk fmt;
+    RakiChunk data;
+    RakiChunk adin;
+    RakiChunk dspl;
+    RakiChunk dspr;
+    RakiChunk dats;
+    RakiChunk datl;
+    RakiChunk datr;
+    RakiChunk msf;
+
+    int64_t plane_offset[2];
+    int64_t plane_block;
+    int64_t plane_blocks;
+    int trailing_samples;
+} RakiDemuxContext;
+
+static unsigned raki_read_u16(AVIOContext *pb, int big_endian)
+{
+    return big_endian ? avio_rb16(pb) : avio_rl16(pb);
+}
+
+static unsigned raki_read_u32(AVIOContext *pb, int big_endian)
+{
+    return big_endian ? avio_rb32(pb) : avio_rl32(pb);
+}
+
+static int raki_platform_is_big_endian(uint32_t platform)
+{
+    return platform == MKTAG('W', 'i', 'i', ' ') ||
+           platform == MKTAG('C', 'a', 'f', 'e') ||
+           platform == MKTAG('P', 'S', '3', ' ') ||
+           platform == MKTAG('X', '3', '6', '0');
+}
+
+static int raki_probe(const AVProbeData *p)
+{
+    const uint8_t *buf;
+    uint32_t platform, chunks;
+    int big_endian;
+
+    if (p->buf_size < 0x20)
+        return 0;
+
+    if (!memcmp(p->buf, "RAKI", 4))
+        buf = p->buf;
+    else if (!memcmp(p->buf + 4, "RAKI", 4))
+        buf = p->buf + 4;
+    else
+        return 0;
+
+    platform   = AV_RL32(buf + 8);
+    big_endian = raki_platform_is_big_endian(platform);
+    chunks     = big_endian ? AV_RB32(buf + 0x18) : AV_RL32(buf + 0x18);
+
+    if (!chunks || chunks > RAKI_MAX_CHUNKS)
+        return AVPROBE_SCORE_MAX / 4;
+
+    return AVPROBE_SCORE_MAX;
+}
+
+static int raki_set_chunk(RakiDemuxContext *raki, uint32_t id,
+                          int64_t offset, int64_t size)
+{
+    RakiChunk *chunk = NULL;
+
+    switch (id) {
+    case MKTAG('f', 'm', 't', ' '): chunk = &raki->fmt;  break;
+    case MKTAG('d', 'a', 't', 'a'): chunk = &raki->data; break;
+    case MKTAG('A', 'd', 'I', 'n'): chunk = &raki->adin; break;
+    case MKTAG('d', 's', 'p', 'L'): chunk = &raki->dspl; break;
+    case MKTAG('d', 's', 'p', 'R'): chunk = &raki->dspr; break;
+    case MKTAG('d', 'a', 't', 'S'): chunk = &raki->dats; break;
+    case MKTAG('d', 'a', 't', 'L'): chunk = &raki->datl; break;
+    case MKTAG('d', 'a', 't', 'R'): chunk = &raki->datr; break;
+    case MKTAG('M', 's', 'f', ' '): chunk = &raki->msf;  break;
+    default:
+        return 0;
+    }
+
+    if (chunk->present)
+        return AVERROR_INVALIDDATA;
+
+    chunk->offset  = offset;
+    chunk->size    = size;
+    chunk->present = 1;
+    return 0;
+}
+
+static int raki_check_chunk(AVFormatContext *s, const RakiChunk *chunk,
+                            int64_t minimum_size)
+{
+    RakiDemuxContext *raki = s->priv_data;
+
+    if (!chunk->present || chunk->size < minimum_size ||
+        chunk->offset < 0 || chunk->offset > raki->file_size ||
+        chunk->size > raki->file_size - chunk->offset)
+        return AVERROR_INVALIDDATA;
+
+    return 0;
+}
+
+static int raki_check_chunk_region(const RakiChunk *chunk,
+                                   int64_t start, int64_t end)
+{
+    if (chunk->present &&
+        (chunk->offset < start || chunk->offset > end ||
+         chunk->size > end - chunk->offset))
+        return AVERROR_INVALIDDATA;
+
+    return 0;
+}
+
+static int raki_seek_chunk(AVFormatContext *s, const RakiChunk *chunk,
+                           int64_t minimum_size)
+{
+    int ret = raki_check_chunk(s, chunk, minimum_size);
+
+    if (ret < 0)
+        return ret;
+    if (avio_seek(s->pb, chunk->offset, SEEK_SET) < 0)
+        return AVERROR(EIO);
+    return 0;
+}
+
+static enum AVCodecID raki_pcm_codec_id(unsigned tag, unsigned bits,
+                                        int big_endian)
+{
+    if (tag == 1) {
+        switch (bits) {
+        case 8:  return AV_CODEC_ID_PCM_U8;
+        case 16: return big_endian ? AV_CODEC_ID_PCM_S16BE : AV_CODEC_ID_PCM_S16LE;
+        case 24: return big_endian ? AV_CODEC_ID_PCM_S24BE : AV_CODEC_ID_PCM_S24LE;
+        case 32: return big_endian ? AV_CODEC_ID_PCM_S32BE : AV_CODEC_ID_PCM_S32LE;
+        }
+    } else if (tag == 3) {
+        switch (bits) {
+        case 32: return big_endian ? AV_CODEC_ID_PCM_F32BE : AV_CODEC_ID_PCM_F32LE;
+        case 64: return big_endian ? AV_CODEC_ID_PCM_F64BE : AV_CODEC_ID_PCM_F64LE;
+        }
+    }
+
+    return AV_CODEC_ID_NONE;
+}
+
+static int raki_is_pcm_codec(enum AVCodecID codec_id)
+{
+    switch (codec_id) {
+    case AV_CODEC_ID_PCM_U8:
+    case AV_CODEC_ID_PCM_S16LE:
+    case AV_CODEC_ID_PCM_S16BE:
+    case AV_CODEC_ID_PCM_S24LE:
+    case AV_CODEC_ID_PCM_S24BE:
+    case AV_CODEC_ID_PCM_S32LE:
+    case AV_CODEC_ID_PCM_S32BE:
+    case AV_CODEC_ID_PCM_F32LE:
+    case AV_CODEC_ID_PCM_F32BE:
+    case AV_CODEC_ID_PCM_F64LE:
+    case AV_CODEC_ID_PCM_F64BE:
+        return 1;
+    default:
+        return 0;
+    }
+}
+
+static int raki_set_data_region(AVFormatContext *s, const RakiChunk *chunk)
+{
+    RakiDemuxContext *raki = s->priv_data;
+    int ret = raki_check_chunk(s, chunk, 1);
+
+    if (ret < 0)
+        return ret;
+
+    raki->data_offset = chunk->offset;
+    raki->data_end    = chunk->offset + chunk->size;
+    if (avio_seek(s->pb, raki->data_offset, SEEK_SET) < 0)
+        return AVERROR(EIO);
+    return 0;
+}
+
+static int raki_skip_id3v2(AVFormatContext *s)
+{
+    RakiDemuxContext *raki = s->priv_data;
+    uint8_t header[ID3v2_HEADER_SIZE];
+    int tag_size, ret;
+
+    if (raki->data_end - raki->data_offset < ID3v2_HEADER_SIZE)
+        return 0;
+
+    ret = ffio_read_size(s->pb, header, sizeof(header));
+    if (ret < 0)
+        return ret;
+    if (avio_seek(s->pb, raki->data_offset, SEEK_SET) < 0)
+        return AVERROR(EIO);
+    if (!ff_id3v2_match(header, ID3v2_DEFAULT_MAGIC))
+        return 0;
+
+    tag_size = ff_id3v2_tag_len(header);
+    if (tag_size > raki->data_end - raki->data_offset)
+        return AVERROR_INVALIDDATA;
+    raki->data_offset += tag_size;
+    if (avio_seek(s->pb, raki->data_offset, SEEK_SET) < 0)
+        return AVERROR(EIO);
+    return 0;
+}
+
+static int raki_read_wave_format(AVFormatContext *s, AVStream *st)
+{
+    RakiDemuxContext *raki = s->priv_data;
+    AVCodecParameters *par = st->codecpar;
+    const RakiChunk *payload = raki->msf.present ? &raki->msf : &raki->data;
+    unsigned tag = 0, channels, sample_rate, byte_rate = 0, block_align, bits;
+    int frame_duration;
+    int ret;
+
+    ret = raki_seek_chunk(s, &raki->fmt, 16);
+    if (ret < 0)
+        return ret;
+
+    if (!raki->big_endian) {
+        if (raki->fmt.size > INT_MAX)
+            return AVERROR_INVALIDDATA;
+        ret = ff_get_wav_header(s, s->pb, par, raki->fmt.size, 0);
+        if (ret < 0)
+            return ret;
+    } else {
+        enum AVCodecID codec_id;
+
+        tag          = raki_read_u16(s->pb, 1);
+        channels     = raki_read_u16(s->pb, 1);
+        sample_rate  = raki_read_u32(s->pb, 1);
+        byte_rate    = raki_read_u32(s->pb, 1);
+        block_align  = raki_read_u16(s->pb, 1);
+        bits         = raki_read_u16(s->pb, 1);
+
+        codec_id = raki_pcm_codec_id(tag, bits, 1);
+        if (codec_id == AV_CODEC_ID_NONE) {
+            if (tag == 0x0055)
+                codec_id = AV_CODEC_ID_MP3;
+            else {
+                avpriv_request_sample(s, "big-endian WAVE format 0x%04x", tag);
+                return AVERROR_PATCHWELCOME;
+            }
+        }
+
+        par->codec_type            = AVMEDIA_TYPE_AUDIO;
+        par->codec_id              = codec_id;
+        par->codec_tag             = tag;
+        par->sample_rate           = sample_rate;
+        par->block_align           = block_align;
+        par->bits_per_coded_sample = bits;
+        par->bit_rate              = 8LL * byte_rate;
+        av_channel_layout_default(&par->ch_layout, channels);
+    }
+
+    if (par->codec_id != AV_CODEC_ID_ADPCM_MS &&
+        par->codec_id != AV_CODEC_ID_MP3 &&
+        !raki_is_pcm_codec(par->codec_id)) {
+        avpriv_request_sample(s, "WAVE format 0x%04x", par->codec_tag);
+        return AVERROR_PATCHWELCOME;
+    }
+    if (!par->ch_layout.nb_channels || par->ch_layout.nb_channels > 64 ||
+        !par->sample_rate || !par->block_align)
+        return AVERROR_INVALIDDATA;
+    if (raki->ps3_mp3 && par->codec_id == AV_CODEC_ID_MP3)
+        par->bit_rate = 0;
+    avpriv_set_pts_info(st, 64, 1, par->sample_rate);
+
+    ret = raki_set_data_region(s, payload);
+    if (ret < 0)
+        return ret;
+
+    if (par->codec_id == AV_CODEC_ID_MP3) {
+        ffstream(st)->need_parsing = AVSTREAM_PARSE_FULL_RAW;
+        raki->packet_size = 4096;
+        ret = raki_skip_id3v2(s);
+        if (ret < 0)
+            return ret;
+    } else if (par->codec_id == AV_CODEC_ID_ADPCM_MS) {
+        if (payload->size % par->block_align)
+            return AVERROR_INVALIDDATA;
+        raki->packet_size = par->block_align;
+        frame_duration = av_get_audio_frame_duration2(par, par->block_align);
+        if (frame_duration <= 0)
+            return AVERROR_INVALIDDATA;
+        st->duration = payload->size / par->block_align * frame_duration;
+    } else {
+        if (par->block_align != par->ch_layout.nb_channels *
+                                ((par->bits_per_coded_sample + 7) / 8) ||
+            payload->size % par->block_align)
+            return AVERROR_INVALIDDATA;
+        raki->packet_size = FFMAX(par->block_align,
+                                  4096 / par->block_align * par->block_align);
+        st->duration = payload->size / par->block_align;
+    }
+
+    return 0;
+}
+
+static int raki_read_xma2(AVFormatContext *s, AVStream *st)
+{
+    RakiDemuxContext *raki = s->priv_data;
+    AVCodecParameters *par = st->codecpar;
+    uint8_t *extra;
+    unsigned tag, channels, sample_rate, byte_rate, bits, extra_size;
+    unsigned num_streams, channel_mask, samples_encoded, bytes_per_block;
+    unsigned play_begin, play_length, loop_begin, loop_length, block_count;
+    int ret;
+
+    ret = raki_seek_chunk(s, &raki->fmt, 52);
+    if (ret < 0)
+        return ret;
+
+    tag          = raki_read_u16(s->pb, raki->big_endian);
+    channels     = raki_read_u16(s->pb, raki->big_endian);
+    sample_rate  = raki_read_u32(s->pb, raki->big_endian);
+    byte_rate    = raki_read_u32(s->pb, raki->big_endian);
+    avio_skip(s->pb, 2); /* WAVE block alignment */
+    bits         = raki_read_u16(s->pb, raki->big_endian);
+    extra_size   = raki_read_u16(s->pb, raki->big_endian);
+    num_streams  = raki_read_u16(s->pb, raki->big_endian);
+    channel_mask = raki_read_u32(s->pb, raki->big_endian);
+    samples_encoded = raki_read_u32(s->pb, raki->big_endian);
+    bytes_per_block = raki_read_u32(s->pb, raki->big_endian);
+    play_begin   = raki_read_u32(s->pb, raki->big_endian);
+    play_length  = raki_read_u32(s->pb, raki->big_endian);
+    loop_begin   = raki_read_u32(s->pb, raki->big_endian);
+    loop_length  = raki_read_u32(s->pb, raki->big_endian);
+
+    if (tag != 0x0166 || extra_size != 34 || !channels || channels > 16 ||
+        !num_streams || num_streams > 8 || channels < num_streams ||
+        channels > 2 * num_streams || !sample_rate ||
+        sample_rate > INT_MAX ||
+        (channel_mask && av_popcount(channel_mask) != channels) ||
+        !samples_encoded || play_begin > samples_encoded ||
+        (play_length && play_length > samples_encoded - play_begin) ||
+        (loop_length && (loop_begin > samples_encoded ||
+                         loop_length > samples_encoded - loop_begin)) ||
+        !bytes_per_block || bytes_per_block % 2048)
+        return AVERROR_INVALIDDATA;
+
+    ret = ff_alloc_extradata(par, 34);
+    if (ret < 0)
+        return ret;
+    extra = par->extradata;
+    AV_WL16(extra,      num_streams);
+    AV_WL32(extra + 2,  channel_mask);
+    AV_WL32(extra + 6,  samples_encoded);
+    AV_WL32(extra + 10, bytes_per_block);
+    AV_WL32(extra + 14, play_begin);
+    AV_WL32(extra + 18, play_length);
+    AV_WL32(extra + 22, loop_begin);
+    AV_WL32(extra + 26, loop_length);
+    extra[30] = avio_r8(s->pb);
+    extra[31] = avio_r8(s->pb);
+    block_count = raki_read_u16(s->pb, raki->big_endian);
+    AV_WL16(extra + 32, block_count);
+
+    par->codec_type            = AVMEDIA_TYPE_AUDIO;
+    par->codec_id              = AV_CODEC_ID_XMA2;
+    par->codec_tag             = tag;
+    par->sample_rate           = sample_rate;
+    par->block_align           = 2048;
+    par->bits_per_coded_sample = bits;
+    par->initial_padding       = play_begin;
+    par->bit_rate = 8LL * byte_rate;
+    if (channel_mask) {
+        ret = av_channel_layout_from_mask(&par->ch_layout, channel_mask);
+        if (ret < 0)
+            return ret;
+    } else {
+        av_channel_layout_default(&par->ch_layout, channels);
+    }
+    avpriv_set_pts_info(st, 64, 1, sample_rate);
+    ffstream(st)->need_parsing = AVSTREAM_PARSE_FULL_RAW;
+    ffstream(st)->start_skip_samples = play_begin;
+    st->duration = play_length ? play_length : samples_encoded;
+
+    ret = raki_set_data_region(s, &raki->data);
+    if (ret < 0)
+        return ret;
+    if (raki->data.size % 2048)
+        return AVERROR_INVALIDDATA;
+    raki->packet_size = 2048;
+    return 0;
+}
+
+static int raki_read_dsp(AVFormatContext *s, AVStream *st)
+{
+    RakiDemuxContext *raki = s->priv_data;
+    AVCodecParameters *par = st->codecpar;
+    RakiChunk *info[2] = { &raki->dspl, &raki->dspr };
+    unsigned channels, sample_rate, samples = 0;
+    int64_t decoded_samples;
+    int ch, ret;
+
+    ret = raki_seek_chunk(s, &raki->fmt, 16);
+    if (ret < 0)
+        return ret;
+    avio_skip(s->pb, 2);
+    channels    = raki_read_u16(s->pb, raki->big_endian);
+    sample_rate = raki_read_u32(s->pb, raki->big_endian);
+
+    if (!channels || channels > 2 || !sample_rate || sample_rate > INT_MAX)
+        return AVERROR_INVALIDDATA;
+
+    par->codec_type            = AVMEDIA_TYPE_AUDIO;
+    par->codec_id              = AV_CODEC_ID_ADPCM_THP;
+    par->sample_rate           = sample_rate;
+    par->block_align           = 8 * channels;
+    par->bits_per_coded_sample = 4;
+    av_channel_layout_default(&par->ch_layout, channels);
+
+    ret = ff_alloc_extradata(par, 32 * channels);
+    if (ret < 0)
+        return ret;
+
+    for (ch = 0; ch < channels; ch++) {
+        unsigned channel_samples;
+
+        ret = raki_seek_chunk(s, info[ch], 0x3c);
+        if (ret < 0)
+            return ret;
+        channel_samples = avio_rb32(s->pb);
+        if (!ch)
+            samples = channel_samples;
+        else if (samples != channel_samples)
+            return AVERROR_INVALIDDATA;
+        if (avio_seek(s->pb, info[ch]->offset + 0x1c, SEEK_SET) < 0)
+            return AVERROR(EIO);
+        ret = ffio_read_size(s->pb, par->extradata + 32 * ch, 32);
+        if (ret < 0)
+            return ret;
+    }
+
+    if (channels == 2 && raki->datl.present && raki->datr.present) {
+        ret = raki_check_chunk(s, &raki->datl, 8);
+        if (ret < 0)
+            return ret;
+        ret = raki_check_chunk(s, &raki->datr, 8);
+        if (ret < 0)
+            return ret;
+        if (raki->datl.size != raki->datr.size || raki->datl.size % 8)
+            return AVERROR_INVALIDDATA;
+
+        raki->packet_type     = RAKI_PACKETS_DSP_PLANAR;
+        raki->plane_offset[0] = raki->datl.offset;
+        raki->plane_offset[1] = raki->datr.offset;
+        raki->plane_blocks    = raki->datl.size / 8;
+        decoded_samples       = raki->plane_blocks * 14;
+    } else {
+        const RakiChunk *data = raki->dats.present ? &raki->dats :
+                                raki->datl.present ? &raki->datl : &raki->data;
+
+        ret = raki_set_data_region(s, data);
+        if (ret < 0)
+            return ret;
+        if (data->size % par->block_align)
+            return AVERROR_INVALIDDATA;
+        raki->packet_size = par->block_align;
+        decoded_samples   = data->size / par->block_align * 14;
+    }
+
+    if (samples && samples <= decoded_samples) {
+        st->duration = samples;
+        if (decoded_samples - samples > INT_MAX)
+            return AVERROR_INVALIDDATA;
+        raki->trailing_samples = decoded_samples - samples;
+    } else if (samples > decoded_samples) {
+        return AVERROR_INVALIDDATA;
+    } else {
+        st->duration = decoded_samples;
+    }
+    par->trailing_padding = raki->trailing_samples;
+    avpriv_set_pts_info(st, 64, 1, sample_rate);
+    return 0;
+}
+
+static int raki_opus_duration(const uint8_t *src, int size)
+{
+    unsigned frames = 1;
+    unsigned toc, config, count, frame_size;
+
+    if (size < 1)
+        return AVERROR_INVALIDDATA;
+    toc       = src[0];
+    config    = toc >> 3;
+    count     = toc & 3;
+    frame_size = config < 12 ? FFMAX(480, 960 * (config & 3)) :
+                 config < 16 ? 480 << (config & 1) :
+                               120 << (config & 3);
+    if (count == 3) {
+        if (size < 2)
+            return AVERROR_INVALIDDATA;
+        frames = src[1] & 0x3f;
+    } else if (count) {
+        frames = 2;
+    }
+
+    if (!frames || frame_size * frames > 5760)
+        return AVERROR_INVALIDDATA;
+    return frame_size * frames;
+}
+
+static int raki_read_nx_opus(AVFormatContext *s, AVStream *st)
+{
+    RakiDemuxContext *raki = s->priv_data;
+    AVCodecParameters *par = st->codecpar;
+    unsigned signature, header_size, channel_field, channels, input_rate;
+    unsigned data_info_offset, data_signature, pre_skip, payload_size;
+    int ret;
+
+    ret = raki_seek_chunk(s, &raki->data, 40);
+    if (ret < 0)
+        return ret;
+
+    signature = avio_rl32(s->pb);
+    header_size      = avio_rl32(s->pb);
+    channel_field    = avio_rl32(s->pb);
+    channels         = channel_field >> 8;
+    input_rate       = avio_rl32(s->pb);
+    data_info_offset = avio_rl32(s->pb);
+    avio_skip(s->pb, 8);
+    pre_skip = avio_rl32(s->pb);
+
+    if (signature != 0x80000001 || header_size < 0x18 ||
+        channel_field != channels << 8 || !channels || channels > 2 ||
+        !input_rate || input_rate > INT_MAX || pre_skip > UINT16_MAX ||
+        data_info_offset < 0x20 ||
+        data_info_offset > raki->data.size - 8 ||
+        header_size > data_info_offset - 8)
+        return AVERROR_INVALIDDATA;
+    if (avio_seek(s->pb, raki->data.offset + data_info_offset, SEEK_SET) < 0)
+        return AVERROR(EIO);
+    data_signature = avio_rl32(s->pb);
+    payload_size   = avio_rl32(s->pb);
+    if (data_signature != 0x80000004 || !payload_size ||
+        payload_size > raki->data.size - data_info_offset - 8)
+        return AVERROR_INVALIDDATA;
+
+    ret = ff_alloc_extradata(par, RAKI_OPUS_HEAD_SIZE);
+    if (ret < 0)
+        return ret;
+    memcpy(par->extradata, "OpusHead", 8);
+    par->extradata[8] = 1;
+    par->extradata[9] = channels;
+    AV_WL16(par->extradata + 10, pre_skip);
+    AV_WL32(par->extradata + 12, input_rate);
+    AV_WL16(par->extradata + 16, 0);
+    par->extradata[18] = 0;
+
+    par->codec_type      = AVMEDIA_TYPE_AUDIO;
+    par->codec_id        = AV_CODEC_ID_OPUS;
+    par->sample_rate     = 48000;
+    par->initial_padding = pre_skip;
+    par->seek_preroll    = 3840;
+    av_channel_layout_default(&par->ch_layout, channels);
+    avpriv_set_pts_info(st, 64, 1, 48000);
+    ffstream(st)->start_skip_samples = pre_skip;
+
+    if (raki->adin.present) {
+        unsigned samples;
+
+        ret = raki_check_chunk(s, &raki->adin, 4);
+        if (ret < 0)
+            return ret;
+        if (avio_seek(s->pb, raki->adin.offset, SEEK_SET) < 0)
+            return AVERROR(EIO);
+        samples = avio_rl32(s->pb);
+        if (!samples)
+            return AVERROR_INVALIDDATA;
+        raki->expected_samples = av_rescale(samples, 48000, input_rate);
+        if (!raki->expected_samples)
+            return AVERROR_INVALIDDATA;
+        st->duration = raki->expected_samples;
+    }
+
+    raki->packet_type = RAKI_PACKETS_NX_OPUS;
+    raki->data_offset = raki->data.offset + data_info_offset + 8;
+    raki->data_end    = raki->data_offset + payload_size;
+    if (avio_seek(s->pb, raki->data_offset, SEEK_SET) < 0)
+        return AVERROR(EIO);
+    return 0;
+}
+
+static int raki_read_header(AVFormatContext *s)
+{
+    RakiDemuxContext *raki = s->priv_data;
+    AVIOContext *pb = s->pb;
+    AVStream *st;
+    uint32_t platform, type, header_size, data_start, chunk_count;
+    const RakiChunk *header_chunks[] = {
+        &raki->fmt, &raki->adin, &raki->dspl, &raki->dspr,
+    };
+    const RakiChunk *data_chunks[] = {
+        &raki->data, &raki->dats, &raki->datl, &raki->datr, &raki->msf,
+    };
+    int64_t table_end;
+    int i, ret;
+
+    raki->file_size = avio_size(pb);
+    if (!(pb->seekable & AVIO_SEEKABLE_NORMAL) || raki->file_size < 0x20)
+        return AVERROR_INVALIDDATA;
+
+    if (avio_rl32(pb) == MKTAG('R', 'A', 'K', 'I')) {
+        raki->raki_offset = 0;
+    } else {
+        if (avio_rl32(pb) != MKTAG('R', 'A', 'K', 'I'))
+            return AVERROR_INVALIDDATA;
+        raki->raki_offset = 4;
+    }
+
+    avio_skip(pb, 4); /* version */
+    platform = avio_rl32(pb);
+    type     = avio_rl32(pb);
+    raki->big_endian = raki_platform_is_big_endian(platform);
+    header_size = raki_read_u32(pb, raki->big_endian);
+    data_start  = raki_read_u32(pb, raki->big_endian);
+    chunk_count = raki_read_u32(pb, raki->big_endian);
+    avio_skip(pb, 4);
+
+    if (!chunk_count || chunk_count > RAKI_MAX_CHUNKS)
+        return AVERROR_INVALIDDATA;
+    table_end = raki->raki_offset + 0x20 + 12LL * chunk_count;
+    if (table_end > header_size || header_size > data_start ||
+        data_start > raki->file_size)
+        return AVERROR_INVALIDDATA;
+
+    for (i = 0; i < chunk_count; i++) {
+        uint32_t id = avio_rl32(pb);
+        uint32_t offset = raki_read_u32(pb, raki->big_endian);
+        uint32_t size = raki_read_u32(pb, raki->big_endian);
+
+        ret = raki_set_chunk(raki, id, offset, size);
+        if (ret < 0)
+            return ret;
+    }
+
+    for (i = 0; i < FF_ARRAY_ELEMS(header_chunks); i++) {
+        ret = raki_check_chunk_region(header_chunks[i], table_end, header_size);
+        if (ret < 0)
+            return ret;
+    }
+    for (i = 0; i < FF_ARRAY_ELEMS(data_chunks); i++) {
+        ret = raki_check_chunk_region(data_chunks[i], data_start,
+                                      raki->file_size);
+        if (ret < 0)
+            return ret;
+    }
+
+    if (!raki->data.present && data_start < raki->file_size) {
+        raki->data.offset  = data_start;
+        raki->data.size    = raki->file_size - raki->data.offset;
+        raki->data.present = 1;
+    }
+
+    st = avformat_new_stream(s, NULL);
+    if (!st)
+        return AVERROR(ENOMEM);
+
+    if (platform == MKTAG('N', 'x', ' ', ' ') &&
+        type == MKTAG('N', 'x', ' ', ' '))
+        ret = raki_read_nx_opus(s, st);
+    else if ((platform == MKTAG('C', 'a', 'f', 'e') ||
+              platform == MKTAG('W', 'i', 'i', ' ')) &&
+             type == MKTAG('a', 'd', 'p', 'c'))
+        ret = raki_read_dsp(s, st);
+    else if ((platform == MKTAG('X', '3', '6', '0') ||
+              platform == MKTAG('D', 'u', 'r', 'a') ||
+              platform == MKTAG('S', 'c', 'a', 'r')) &&
+             type == MKTAG('x', 'm', 'a', '2'))
+        ret = raki_read_xma2(s, st);
+    else if (type == MKTAG('p', 'c', 'm', ' ') ||
+             type == MKTAG('a', 'd', 'p', 'c') ||
+             (platform == MKTAG('P', 'S', '3', ' ') &&
+              type == MKTAG('m', 'p', '3', ' '))) {
+        raki->ps3_mp3 = platform == MKTAG('P', 'S', '3', ' ') &&
+                        type == MKTAG('m', 'p', '3', ' ');
+        ret = raki_read_wave_format(s, st);
+    } else {
+        avpriv_request_sample(s, "platform/type 0x%08x/0x%08x",
+                              platform, type);
+        ret = AVERROR_PATCHWELCOME;
+    }
+
+    return ret;
+}
+
+static int raki_add_trailing_padding(RakiDemuxContext *raki, AVPacket *pkt,
+                                     int last_packet)
+{
+    uint8_t *side_data;
+
+    if (!last_packet || !raki->trailing_samples)
+        return 0;
+
+    side_data = av_packet_new_side_data(pkt, AV_PKT_DATA_SKIP_SAMPLES, 10);
+    if (!side_data)
+        return AVERROR(ENOMEM);
+    AV_WL32(side_data, 0);
+    AV_WL32(side_data + 4, raki->trailing_samples);
+    return 0;
+}
+
+static int raki_read_planar_dsp_packet(AVFormatContext *s, AVPacket *pkt)
+{
+    RakiDemuxContext *raki = s->priv_data;
+    int ch, ret;
+
+    if (raki->plane_block >= raki->plane_blocks)
+        return AVERROR_EOF;
+
+    ret = av_new_packet(pkt, 16);
+    if (ret < 0)
+        return ret;
+    pkt->pos = raki->plane_offset[0] + raki->plane_block * 8;
+
+    for (ch = 0; ch < 2; ch++) {
+        int64_t pos = raki->plane_offset[ch] + raki->plane_block * 8;
+        if (avio_seek(s->pb, pos, SEEK_SET) < 0) {
+            ret = AVERROR(EIO);
+            goto fail;
+        }
+        ret = ffio_read_size(s->pb, pkt->data + ch * 8, 8);
+        if (ret < 0)
+            goto fail;
+    }
+
+    pkt->duration = 14;
+    pkt->dts = pkt->pts = raki->next_pts;
+    raki->next_pts += pkt->duration;
+    raki->plane_block++;
+    ret = raki_add_trailing_padding(raki, pkt,
+                                    raki->plane_block == raki->plane_blocks);
+    if (ret < 0)
+        goto fail;
+    return 0;
+
+fail:
+    av_packet_unref(pkt);
+    return ret;
+}
+
+static int raki_read_nx_opus_packet(AVFormatContext *s, AVPacket *pkt)
+{
+    RakiDemuxContext *raki = s->priv_data;
+    AVCodecParameters *par = s->streams[0]->codecpar;
+    int64_t pos = avio_tell(s->pb);
+    int last_packet;
+    unsigned size;
+    int duration, ret;
+
+    if (pos == raki->data_end)
+        return AVERROR_EOF;
+    if (pos < raki->data_offset || pos > raki->data_end ||
+        raki->data_end - pos < 8)
+        return AVERROR_INVALIDDATA;
+
+    size = avio_rb32(s->pb);
+    avio_skip(s->pb, 4); /* encoder final range */
+    if (!size || size > INT_MAX || size > raki->data_end - avio_tell(s->pb))
+        return AVERROR_INVALIDDATA;
+
+    ret = av_get_packet(s->pb, pkt, size);
+    if (ret < 0)
+        return ret;
+    if (ret != size) {
+        av_packet_unref(pkt);
+        return AVERROR(EIO);
+    }
+
+    duration = raki_opus_duration(pkt->data, pkt->size);
+    if (duration < 0) {
+        av_packet_unref(pkt);
+        return duration;
+    }
+    pkt->pos = pos;
+    pkt->duration = duration;
+    pkt->dts = pkt->pts = raki->next_pts;
+    raki->next_pts += duration;
+    last_packet = avio_tell(s->pb) == raki->data_end;
+    if (last_packet && raki->expected_samples) {
+        int64_t decoded_samples = raki->next_pts - par->initial_padding;
+
+        if (decoded_samples < raki->expected_samples ||
+            decoded_samples - raki->expected_samples > INT_MAX) {
+            av_packet_unref(pkt);
+            return AVERROR_INVALIDDATA;
+        }
+        raki->trailing_samples = decoded_samples - raki->expected_samples;
+    }
+    ret = raki_add_trailing_padding(raki, pkt, last_packet);
+    if (ret < 0) {
+        av_packet_unref(pkt);
+        return ret;
+    }
+    return 0;
+}
+
+static int raki_read_contiguous_packet(AVFormatContext *s, AVPacket *pkt)
+{
+    RakiDemuxContext *raki = s->priv_data;
+    AVCodecParameters *par = s->streams[0]->codecpar;
+    int64_t pos = avio_tell(s->pb);
+    int size, ret;
+
+    if (pos == raki->data_end)
+        return AVERROR_EOF;
+    if (pos < raki->data_offset || pos > raki->data_end)
+        return AVERROR_INVALIDDATA;
+
+    size = FFMIN(raki->packet_size, raki->data_end - pos);
+    if (par->codec_id != AV_CODEC_ID_MP3 &&
+        !raki_is_pcm_codec(par->codec_id) &&
+        size != raki->packet_size)
+        return AVERROR_INVALIDDATA;
+    ret = av_get_packet(s->pb, pkt, size);
+    if (ret < 0)
+        return ret;
+    if (ret != size) {
+        av_packet_unref(pkt);
+        return AVERROR(EIO);
+    }
+
+    pkt->pos = pos;
+    if (par->codec_id == AV_CODEC_ID_XMA2) {
+        pkt->duration = (pkt->data[0] >> 2) * 512;
+    } else if (par->codec_id == AV_CODEC_ID_ADPCM_MS) {
+        pkt->duration = av_get_audio_frame_duration2(par, pkt->size);
+    } else if (par->codec_id == AV_CODEC_ID_ADPCM_THP) {
+        pkt->duration = 14;
+    } else if (par->codec_id != AV_CODEC_ID_MP3) {
+        pkt->duration = pkt->size / par->block_align;
+    }
+
+    if (pkt->duration > 0) {
+        pkt->dts = pkt->pts = raki->next_pts;
+        raki->next_pts += pkt->duration;
+    }
+
+    ret = raki_add_trailing_padding(raki, pkt, avio_tell(s->pb) == raki->data_end);
+    if (ret < 0) {
+        av_packet_unref(pkt);
+        return ret;
+    }
+    return 0;
+}
+
+static int raki_read_packet(AVFormatContext *s, AVPacket *pkt)
+{
+    RakiDemuxContext *raki = s->priv_data;
+    int ret;
+
+    switch (raki->packet_type) {
+    case RAKI_PACKETS_DSP_PLANAR:
+        ret = raki_read_planar_dsp_packet(s, pkt);
+        break;
+    case RAKI_PACKETS_NX_OPUS:
+        ret = raki_read_nx_opus_packet(s, pkt);
+        break;
+    default:
+        ret = raki_read_contiguous_packet(s, pkt);
+        break;
+    }
+
+    if (ret >= 0)
+        pkt->stream_index = 0;
+    return ret;
+}
+
+const FFInputFormat ff_raki_demuxer = {
+    .p.name         = "raki",
+    .p.long_name    = NULL_IF_CONFIG_SMALL("UbiArt RAKI audio"),
+    .p.extensions   = "raki,rak,ckd",
+    .p.flags        = AVFMT_GENERIC_INDEX,
+    .priv_data_size = sizeof(RakiDemuxContext),
+    .read_probe     = raki_probe,
+    .read_header    = raki_read_header,
+    .read_packet    = raki_read_packet,
+};
-- 
2.52.0


>From aca9e3894ade965b406e5d9739753a617dccde61 Mon Sep 17 00:00:00 2001
From: Martijn Brouwer <[email protected]>
Date: Fri, 28 Aug 2026 22:55:58 +0200
Subject: [PATCH 2/2] tests/fate: add RAKI demuxer tests

Cover little- and big-endian PCM, Microsoft and Nintendo ADPCM, MP3 with both header layouts, Nintendo Opus, and XMA2 demuxing.

Signed-off-by: Martijn Brouwer <[email protected]>
---
 tests/Makefile                       |   1 +
 tests/fate/raki.mak                  |  10 +
 tests/ref/fate/raki-cafe-interleaved | 578 +++++++++++++++++++++++++++
 tests/ref/fate/raki-cafe-planar      | 578 +++++++++++++++++++++++++++
 tests/ref/fate/raki-nx-opus          |  19 +
 tests/ref/fate/raki-ps3-mp3          |   7 +
 tests/ref/fate/raki-ps3-mp3-prefixed |   7 +
 tests/ref/fate/raki-wii-pcm          |  17 +
 tests/ref/fate/raki-win-ms-adpcm     |  18 +
 tests/ref/fate/raki-win-pcm          |  17 +
 tests/ref/fate/raki-x360-xma2        |  11 +
 11 files changed, 1263 insertions(+)
 create mode 100644 tests/fate/raki.mak
 create mode 100644 tests/ref/fate/raki-cafe-interleaved
 create mode 100644 tests/ref/fate/raki-cafe-planar
 create mode 100644 tests/ref/fate/raki-nx-opus
 create mode 100644 tests/ref/fate/raki-ps3-mp3
 create mode 100644 tests/ref/fate/raki-ps3-mp3-prefixed
 create mode 100644 tests/ref/fate/raki-wii-pcm
 create mode 100644 tests/ref/fate/raki-win-ms-adpcm
 create mode 100644 tests/ref/fate/raki-win-pcm
 create mode 100644 tests/ref/fate/raki-x360-xma2

diff --git a/tests/Makefile b/tests/Makefile
index 3f0132dd97..b01ad52751 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -241,6 +241,7 @@ include $(SRC_PATH)/tests/fate/prores.mak
 include $(SRC_PATH)/tests/fate/qoa.mak
 include $(SRC_PATH)/tests/fate/qt.mak
 include $(SRC_PATH)/tests/fate/qtrle.mak
+include $(SRC_PATH)/tests/fate/raki.mak
 include $(SRC_PATH)/tests/fate/real.mak
 include $(SRC_PATH)/tests/fate/sbc.mak
 include $(SRC_PATH)/tests/fate/screen.mak
diff --git a/tests/fate/raki.mak b/tests/fate/raki.mak
new file mode 100644
index 0000000000..a829103e74
--- /dev/null
+++ b/tests/fate/raki.mak
@@ -0,0 +1,10 @@
+RAKI_SAMPLES = cafe-interleaved cafe-planar nx-opus ps3-mp3 \
+               ps3-mp3-prefixed wii-pcm win-ms-adpcm win-pcm x360-xma2
+
+FATE_RAKI-$(call ALLYES, RAKI_DEMUXER FRAMECRC_MUXER FILE_PROTOCOL PIPE_PROTOCOL) += \
+    $(addprefix fate-raki-,$(RAKI_SAMPLES))
+
+$(FATE_RAKI-yes): CMD = framecrc -i $(TARGET_SAMPLES)/raki/$(@:fate-raki-%=%).raki -c:a copy
+
+FATE_SAMPLES_FFMPEG += $(FATE_RAKI-yes)
+fate-raki: $(FATE_RAKI-yes)
diff --git a/tests/ref/fate/raki-cafe-interleaved b/tests/ref/fate/raki-cafe-interleaved
new file mode 100644
index 0000000000..742add34ee
--- /dev/null
+++ b/tests/ref/fate/raki-cafe-interleaved
@@ -0,0 +1,578 @@
+#extradata 0:       64, 0x020f05ce
+#tb 0: 1/32000
+#media_type 0: audio
+#codec_id 0: adpcm_thp
+#sample_rate 0: 32000
+#channel_layout_name 0: stereo
+0,          0,          0,       14,       16, 0x16900343
+0,         14,         14,       14,       16, 0x31c206e1
+0,         28,         28,       14,       16, 0x23a00491
+0,         42,         42,       14,       16, 0x5bd40ba1
+0,         56,         56,       14,       16, 0x10620253
+0,         70,         70,       14,       16, 0x41690733
+0,         84,         84,       14,       16, 0x279a04e5
+0,         98,         98,       14,       16, 0x5b6a0b0f
+0,        112,        112,       14,       16, 0x591e0aa1
+0,        126,        126,       14,       16, 0x1ec00363
+0,        140,        140,       14,       16, 0x4404076b
+0,        154,        154,       14,       16, 0x1a140361
+0,        168,        168,       14,       16, 0x62020bd9
+0,        182,        182,       14,       16, 0x3abe07f9
+0,        196,        196,       14,       16, 0x3a7c0677
+0,        210,        210,       14,       16, 0x434007d1
+0,        224,        224,       14,       16, 0x1e0a0359
+0,        238,        238,       14,       16, 0x1b3c0330
+0,        252,        252,       14,       16, 0x33220754
+0,        266,        266,       14,       16, 0x47700855
+0,        280,        280,       14,       16, 0x46dd08b3
+0,        294,        294,       14,       16, 0x0ea60215
+0,        308,        308,       14,       16, 0x4048086d
+0,        322,        322,       14,       16, 0x2409052d
+0,        336,        336,       14,       16, 0x59920ab1
+0,        350,        350,       14,       16, 0x193e0361
+0,        364,        364,       14,       16, 0x2bbc053b
+0,        378,        378,       14,       16, 0x2ee0067d
+0,        392,        392,       14,       16, 0x2eec066b
+0,        406,        406,       14,       16, 0x5ca20bc3
+0,        420,        420,       14,       16, 0x11760275
+0,        434,        434,       14,       16, 0x35ac0649
+0,        448,        448,       14,       16, 0x30d0067f
+0,        462,        462,       14,       16, 0x5af80b0d
+0,        476,        476,       14,       16, 0x59990aac
+0,        490,        490,       14,       16, 0x34120585
+0,        504,        504,       14,       16, 0x47240809
+0,        518,        518,       14,       16, 0x20e20467
+0,        532,        532,       14,       16, 0x180d02d2
+0,        546,        546,       14,       16, 0x36ea07a8
+0,        560,        560,       14,       16, 0x3d6106db
+0,        574,        574,       14,       16, 0x48f8086f
+0,        588,        588,       14,       16, 0x176c0319
+0,        602,        602,       14,       16, 0x1b78033d
+0,        616,        616,       14,       16, 0x44f9095c
+0,        630,        630,       14,       16, 0x3c7006b9
+0,        644,        644,       14,       16, 0x518f0a04
+0,        658,        658,       14,       16, 0x133402af
+0,        672,        672,       14,       16, 0x3d780819
+0,        686,        686,       14,       16, 0x216604cb
+0,        700,        700,       14,       16, 0x4dde08b3
+0,        714,        714,       14,       16, 0x4a8609bf
+0,        728,        728,       14,       16, 0x2ab00530
+0,        742,        742,       14,       16, 0x38900739
+0,        756,        756,       14,       16, 0x21950485
+0,        770,        770,       14,       16, 0x5d940be5
+0,        784,        784,       14,       16, 0x12840297
+0,        798,        798,       14,       16, 0x335705aa
+0,        812,        812,       14,       16, 0x2f8c065b
+0,        826,        826,       14,       16, 0x59f60aed
+0,        840,        840,       14,       16, 0x582e0a5b
+0,        854,        854,       14,       16, 0x352105a7
+0,        868,        868,       14,       16, 0x447e073d
+0,        882,        882,       14,       16, 0x1fea0429
+0,        896,        896,       14,       16, 0x60a40bb5
+0,        910,        910,       14,       16, 0x4e1a09ed
+0,        924,        924,       14,       16, 0x3fa2071f
+0,        938,        938,       14,       16, 0x4bec08cd
+0,        952,        952,       14,       16, 0x1cea0335
+0,        966,        966,       14,       16, 0x451306df
+0,        980,        980,       14,       16, 0x32c9072a
+0,        994,        994,       14,       16, 0x4c9408fd
+0,       1008,       1008,       14,       16, 0x4ff509cd
+0,       1022,       1022,       14,       16, 0x0eca021b
+0,       1036,       1036,       14,       16, 0x3b3007d5
+0,       1050,       1050,       14,       16, 0x3e6408a5
+0,       1064,       1064,       14,       16, 0x48b908eb
+0,       1078,       1078,       14,       16, 0x4a1009a5
+0,       1092,       1092,       14,       16, 0x2c0e0563
+0,       1106,       1106,       14,       16, 0x3a6c07f5
+0,       1120,       1120,       14,       16, 0x2cc80641
+0,       1134,       1134,       14,       16, 0x5f090c16
+0,       1148,       1148,       14,       16, 0x137602b9
+0,       1162,       1162,       14,       16, 0x30cf0582
+0,       1176,       1176,       14,       16, 0x2d6c0617
+0,       1190,       1190,       14,       16, 0x236003d9
+0,       1204,       1204,       14,       16, 0x529809dd
+0,       1218,       1218,       14,       16, 0x225203c9
+0,       1232,       1232,       14,       16, 0x40a7076e
+0,       1246,       1246,       14,       16, 0x1f2203f3
+0,       1260,       1260,       14,       16, 0x16a00291
+0,       1274,       1274,       14,       16, 0x47960914
+0,       1288,       1288,       14,       16, 0x40c20743
+0,       1302,       1302,       14,       16, 0x4c0008d3
+0,       1316,       1316,       14,       16, 0x1bfe0313
+0,       1330,       1330,       14,       16, 0x50a80a61
+0,       1344,       1344,       14,       16, 0x2ebe06ca
+0,       1358,       1358,       14,       16, 0x40b40741
+0,       1372,       1372,       14,       16, 0x4d76096a
+0,       1386,       1386,       14,       16, 0x15da02f1
+0,       1400,       1400,       14,       16, 0x3a3007b1
+0,       1414,       1414,       14,       16, 0x36740746
+0,       1428,       1428,       14,       16, 0x4af20941
+0,       1442,       1442,       14,       16, 0x4a5809c9
+0,       1456,       1456,       14,       16, 0x18040387
+0,       1470,       1470,       14,       16, 0x381007af
+0,       1484,       1484,       14,       16, 0x391807ef
+0,       1498,       1498,       14,       16, 0x56080a47
+0,       1512,       1512,       14,       16, 0x14c802db
+0,       1526,       1526,       14,       16, 0x3780064b
+0,       1540,       1540,       14,       16, 0x394207d1
+0,       1554,       1554,       14,       16, 0x2bcc0597
+0,       1568,       1568,       14,       16, 0x50b3098e
+0,       1582,       1582,       14,       16, 0x22a603eb
+0,       1596,       1596,       14,       16, 0x3cfe06a3
+0,       1610,       1610,       14,       16, 0x1e720421
+0,       1624,       1624,       14,       16, 0x16ea028f
+0,       1638,       1638,       14,       16, 0x471c090d
+0,       1652,       1652,       14,       16, 0x31a805a7
+0,       1666,       1666,       14,       16, 0x4c6608dd
+0,       1680,       1680,       14,       16, 0x1acc02f1
+0,       1694,       1694,       14,       16, 0x4fb60a3f
+0,       1708,       1708,       14,       16, 0x3daa0869
+0,       1722,       1722,       14,       16, 0x41f00767
+0,       1736,       1736,       14,       16, 0x465108ac
+0,       1750,       1750,       14,       16, 0x15b202f3
+0,       1764,       1764,       14,       16, 0x41d0090d
+0,       1778,       1778,       14,       16, 0x2be8065e
+0,       1792,       1792,       14,       16, 0x40f20785
+0,       1806,       1806,       14,       16, 0x4c580a09
+0,       1820,       1820,       14,       16, 0x183a038d
+0,       1834,       1834,       14,       16, 0x362f076b
+0,       1848,       1848,       14,       16, 0x2ad105f9
+0,       1862,       1862,       14,       16, 0x56840a49
+0,       1876,       1876,       14,       16, 0x15f602fd
+0,       1890,       1890,       14,       16, 0x31660553
+0,       1904,       1904,       14,       16, 0x2842056d
+0,       1918,       1918,       14,       16, 0x26ee0447
+0,       1932,       1932,       14,       16, 0x5a7a0b7d
+0,       1946,       1946,       14,       16, 0x23d6040d
+0,       1960,       1960,       14,       16, 0x3c91069b
+0,       1974,       1974,       14,       16, 0x1c8403df
+0,       1988,       1988,       14,       16, 0x1586026d
+0,       2002,       2002,       14,       16, 0x482a0927
+0,       2016,       2016,       14,       16, 0x33e805eb
+0,       2030,       2030,       14,       16, 0x4d3d0869
+0,       2044,       2044,       14,       16, 0x19de02cf
+0,       2058,       2058,       14,       16, 0x64660c1d
+0,       2072,       2072,       14,       16, 0x3f610882
+0,       2086,       2086,       14,       16, 0x44c307cb
+0,       2100,       2100,       14,       16, 0x446207c1
+0,       2114,       2114,       14,       16, 0x2006039d
+0,       2128,       2128,       14,       16, 0x1f9a03d9
+0,       2142,       2142,       14,       16, 0x39d4081b
+0,       2156,       2156,       14,       16, 0x425207a9
+0,       2170,       2170,       14,       16, 0x4ebd0a5a
+0,       2184,       2184,       14,       16, 0x24eb0449
+0,       2198,       2198,       14,       16, 0x340c0727
+0,       2212,       2212,       14,       16, 0x27f00597
+0,       2226,       2226,       14,       16, 0x57640a6b
+0,       2240,       2240,       14,       16, 0x16da031d
+0,       2254,       2254,       14,       16, 0x24300477
+0,       2268,       2268,       14,       16, 0x351e0749
+0,       2282,       2282,       14,       16, 0x286a0460
+0,       2296,       2296,       14,       16, 0x546e0a0b
+0,       2310,       2310,       14,       16, 0x24c8042f
+0,       2324,       2324,       14,       16, 0x2f480539
+0,       2338,       2338,       14,       16, 0x1b7403bd
+0,       2352,       2352,       14,       16, 0x258c06a1
+0,       2366,       2366,       14,       16, 0x469e08f5
+0,       2380,       2380,       14,       16, 0x3628062f
+0,       2394,       2394,       14,       16, 0x406e0744
+0,       2408,       2408,       14,       16, 0x193002ad
+0,       2422,       2422,       14,       16, 0x15d0027f
+0,       2436,       2436,       14,       16, 0x3e3a085d
+0,       2450,       2450,       14,       16, 0x3720060f
+0,       2464,       2464,       14,       16, 0x436807a9
+0,       2478,       2478,       14,       16, 0x175e0333
+0,       2492,       2492,       14,       16, 0x408c08e9
+0,       2506,       2506,       14,       16, 0x36c6079b
+0,       2520,       2520,       14,       16, 0x4536080d
+0,       2534,       2534,       14,       16, 0x4e920a33
+0,       2548,       2548,       14,       16, 0x24c00447
+0,       2562,       2562,       14,       16, 0x31da06e3
+0,       2576,       2576,       14,       16, 0x1eda04dc
+0,       2590,       2590,       14,       16, 0x58740a8d
+0,       2604,       2604,       14,       16, 0x180e033f
+0,       2618,       2618,       14,       16, 0x26b004b9
+0,       2632,       2632,       14,       16, 0x32de0705
+0,       2646,       2646,       14,       16, 0x28e40549
+0,       2660,       2660,       14,       16, 0x5c2a0bbf
+0,       2674,       2674,       14,       16, 0x10160251
+0,       2688,       2688,       14,       16, 0x3094055f
+0,       2702,       2702,       14,       16, 0x348c0707
+0,       2716,       2716,       14,       16, 0x5c2c0b2f
+0,       2730,       2730,       14,       16, 0x587e0a85
+0,       2744,       2744,       14,       16, 0x1ebe0363
+0,       2758,       2758,       14,       16, 0x419d0758
+0,       2772,       2772,       14,       16, 0x192c0345
+0,       2786,       2786,       14,       16, 0x63080bf9
+0,       2800,       2800,       14,       16, 0x3c7e0839
+0,       2814,       2814,       14,       16, 0x394e0655
+0,       2828,       2828,       14,       16, 0x47b00845
+0,       2842,       2842,       14,       16, 0x1ecb0379
+0,       2856,       2856,       14,       16, 0x3f7e08c7
+0,       2870,       2870,       14,       16, 0x36a707c3
+0,       2884,       2884,       14,       16, 0x46760831
+0,       2898,       2898,       14,       16, 0x4f2c0a73
+0,       2912,       2912,       14,       16, 0x1278028d
+0,       2926,       2926,       14,       16, 0x2f68069f
+0,       2940,       2940,       14,       16, 0x250c056b
+0,       2954,       2954,       14,       16, 0x4cb00891
+0,       2968,       2968,       14,       16, 0x193e0361
+0,       2982,       2982,       14,       16, 0x295204fd
+0,       2996,       2996,       14,       16, 0x309406bf
+0,       3010,       3010,       14,       16, 0x28100505
+0,       3024,       3024,       14,       16, 0x5d360be1
+0,       3038,       3038,       14,       16, 0x11480273
+0,       3052,       3052,       14,       16, 0x428e0762
+0,       3066,       3066,       14,       16, 0x338006e1
+0,       3080,       3080,       14,       16, 0x5b1c0b0d
+0,       3094,       3094,       14,       16, 0x57680a63
+0,       3108,       3108,       14,       16, 0x25e00485
+0,       3122,       3122,       14,       16, 0x393506aa
+0,       3136,       3136,       14,       16, 0x17ae0289
+0,       3150,       3150,       14,       16, 0x4f640765
+0,       3164,       3164,       14,       16, 0x4bbe099d
+0,       3178,       3178,       14,       16, 0x3c3006b9
+0,       3192,       3192,       14,       16, 0x4864086b
+0,       3206,       3206,       14,       16, 0x1dfe0357
+0,       3220,       3220,       14,       16, 0x1b20033d
+0,       3234,       3234,       14,       16, 0x33be076f
+0,       3248,       3248,       14,       16, 0x49500897
+0,       3262,       3262,       14,       16, 0x497f09c5
+0,       3276,       3276,       14,       16, 0x112a0253
+0,       3290,       3290,       14,       16, 0x3ea6083b
+0,       3304,       3304,       14,       16, 0x31260719
+0,       3318,       3318,       14,       16, 0x599e0ab3
+0,       3332,       3332,       14,       16, 0x485c0981
+0,       3346,       3346,       14,       16, 0x2bc6052e
+0,       3360,       3360,       14,       16, 0x2dae065b
+0,       3374,       3374,       14,       16, 0x2e580667
+0,       3388,       3388,       14,       16, 0x5e060c03
+0,       3402,       3402,       14,       16, 0x12560295
+0,       3416,       3416,       14,       16, 0x31f7057a
+0,       3430,       3430,       14,       16, 0x2fc0065d
+0,       3444,       3444,       14,       16, 0x59f60aed
+0,       3458,       3458,       14,       16, 0x56800a3f
+0,       3472,       3472,       14,       16, 0x34fe05a7
+0,       3486,       3486,       14,       16, 0x37e6061a
+0,       3500,       3500,       14,       16, 0x1d9803bf
+0,       3514,       3514,       14,       16, 0x17380295
+0,       3528,       3528,       14,       16, 0x4bba0995
+0,       3542,       3542,       14,       16, 0x3d7006dd
+0,       3556,       3556,       14,       16, 0x4a460890
+0,       3570,       3570,       14,       16, 0x1d0c0335
+0,       3584,       3584,       14,       16, 0x1d450378
+0,       3598,       3598,       14,       16, 0x328e072f
+0,       3612,       3612,       14,       16, 0x3d8406db
+0,       3626,       3626,       14,       16, 0x51cc0abd
+0,       3640,       3640,       14,       16, 0x13580292
+0,       3654,       3654,       14,       16, 0x3db40817
+0,       3668,       3668,       14,       16, 0x2f9206b9
+0,       3682,       3682,       14,       16, 0x5ad00ad5
+0,       3696,       3696,       14,       16, 0x499709a3
+0,       3710,       3710,       14,       16, 0x289604e9
+0,       3724,       3724,       14,       16, 0x2b6e0617
+0,       3738,       3738,       14,       16, 0x2a7605f8
+0,       3752,       3752,       14,       16, 0x5db60be5
+0,       3766,       3766,       14,       16, 0x136a02b7
+0,       3780,       3780,       14,       16, 0x440607ab
+0,       3794,       3794,       14,       16, 0x2e7c0639
+0,       3808,       3808,       14,       16, 0x238304ae
+0,       3822,       3822,       14,       16, 0x56780a3b
+0,       3836,       3836,       14,       16, 0x223203c9
+0,       3850,       3850,       14,       16, 0x3c350713
+0,       3864,       3864,       14,       16, 0x1c9003a1
+0,       3878,       3878,       14,       16, 0x16d20283
+0,       3892,       3892,       14,       16, 0x37f80791
+0,       3906,       3906,       14,       16, 0x3f940721
+0,       3920,       3920,       14,       16, 0x4a680895
+0,       3934,       3934,       14,       16, 0x1c280315
+0,       3948,       3948,       14,       16, 0x1a52031b
+0,       3962,       3962,       14,       16, 0x34010754
+0,       3976,       3976,       14,       16, 0x3ea406ff
+0,       3990,       3990,       14,       16, 0x4add08ed
+0,       4004,       4004,       14,       16, 0x0f7e021d
+0,       4018,       4018,       14,       16, 0x3a0407b3
+0,       4032,       4032,       14,       16, 0x3886080d
+0,       4046,       4046,       14,       16, 0x49e1091e
+0,       4060,       4060,       14,       16, 0x49a909a7
+0,       4074,       4074,       14,       16, 0x1a2003c3
+0,       4088,       4088,       14,       16, 0x392e07d3
+0,       4102,       4102,       14,       16, 0x2b300603
+0,       4116,       4116,       14,       16, 0x5ea20c07
+0,       4130,       4130,       14,       16, 0x149802d9
+0,       4144,       4144,       14,       16, 0x2240040d
+0,       4158,       4158,       14,       16, 0x2c5c05f5
+0,       4172,       4172,       14,       16, 0x2bfa0599
+0,       4186,       4186,       14,       16, 0x54820a17
+0,       4200,       4200,       14,       16, 0x234003eb
+0,       4214,       4214,       14,       16, 0x408c0790
+0,       4228,       4228,       14,       16, 0x145e0223
+0,       4242,       4242,       14,       16, 0x5eb20b73
+0,       4256,       4256,       14,       16, 0x48a2094d
+0,       4270,       4270,       14,       16, 0x41d60765
+0,       4284,       4284,       14,       16, 0x40db07ac
+0,       4298,       4298,       14,       16, 0x18ea033d
+0,       4312,       4312,       14,       16, 0x50780a5f
+0,       4326,       4326,       14,       16, 0x3f50088b
+0,       4340,       4340,       14,       16, 0x40ce0745
+0,       4354,       4354,       14,       16, 0x4c44095f
+0,       4368,       4368,       14,       16, 0x12b80297
+0,       4382,       4382,       14,       16, 0x1e24039f
+0,       4396,       4396,       14,       16, 0x2c400690
+0,       4410,       4410,       14,       16, 0x3fe40763
+0,       4424,       4424,       14,       16, 0x4d540a25
+0,       4438,       4438,       14,       16, 0x25bb046b
+0,       4452,       4452,       14,       16, 0x364e077d
+0,       4466,       4466,       14,       16, 0x2baa0619
+0,       4480,       4480,       14,       16, 0x5fd40c29
+0,       4494,       4494,       14,       16, 0x158a02fb
+0,       4508,       4508,       14,       16, 0x2666048d
+0,       4522,       4522,       14,       16, 0x382007af
+0,       4536,       4536,       14,       16, 0x26d404fd
+0,       4550,       4550,       14,       16, 0x533a0aa9
+0,       4564,       4564,       14,       16, 0x22d003ed
+0,       4578,       4578,       14,       16, 0x3b080678
+0,       4592,       4592,       14,       16, 0x1ce203c1
+0,       4606,       4606,       14,       16, 0x1736028d
+0,       4620,       4620,       14,       16, 0x49cc0967
+0,       4634,       4634,       14,       16, 0x44d807c9
+0,       4648,       4648,       14,       16, 0x4a0007ee
+0,       4662,       4662,       14,       16, 0x198e035d
+0,       4676,       4676,       14,       16, 0x1b7c0335
+0,       4690,       4690,       14,       16, 0x3fef08b0
+0,       4704,       4704,       14,       16, 0x43ce07a9
+0,       4718,       4718,       14,       16, 0x446e07dd
+0,       4732,       4732,       14,       16, 0x16dc031c
+0,       4746,       4746,       14,       16, 0x1da0037f
+0,       4760,       4760,       14,       16, 0x2a5f063b
+0,       4774,       4774,       14,       16, 0x422407a7
+0,       4788,       4788,       14,       16, 0x4fc80a85
+0,       4802,       4802,       14,       16, 0x258c0469
+0,       4816,       4816,       14,       16, 0x33fe0729
+0,       4830,       4830,       14,       16, 0x2aa3067d
+0,       4844,       4844,       14,       16, 0x60c20c4b
+0,       4858,       4858,       14,       16, 0x16da031d
+0,       4872,       4872,       14,       16, 0x38af0674
+0,       4886,       4886,       14,       16, 0x354d074b
+0,       4900,       4900,       14,       16, 0x1cee0315
+0,       4914,       4914,       14,       16, 0x5b3a0b9d
+0,       4928,       4928,       14,       16, 0x2422040f
+0,       4942,       4942,       14,       16, 0x3e3c06db
+0,       4956,       4956,       14,       16, 0x1ee2040f
+0,       4970,       4970,       14,       16, 0x283206ed
+0,       4984,       4984,       14,       16, 0x44ef08bc
+0,       4998,       4998,       14,       16, 0x34fa060d
+0,       5012,       5012,       14,       16, 0x4040071f
+0,       5026,       5026,       14,       16, 0x193c02af
+0,       5040,       5040,       14,       16, 0x64660c1d
+0,       5054,       5054,       14,       16, 0x3f27087d
+0,       5068,       5068,       14,       16, 0x45f307ed
+0,       5082,       5082,       14,       16, 0x4bf70887
+0,       5096,       5096,       14,       16, 0x155e02d9
+0,       5110,       5110,       14,       16, 0x1ee603bb
+0,       5124,       5124,       14,       16, 0x374007ea
+0,       5138,       5138,       14,       16, 0x442407eb
+0,       5152,       5152,       14,       16, 0x45fa0889
+0,       5166,       5166,       14,       16, 0x24c00447
+0,       5180,       5180,       14,       16, 0x32de0705
+0,       5194,       5194,       14,       16, 0x28320592
+0,       5208,       5208,       14,       16, 0x56b00a4d
+0,       5222,       5222,       14,       16, 0x17d9032f
+0,       5236,       5236,       14,       16, 0x380e065b
+0,       5250,       5250,       14,       16, 0x32ef0707
+0,       5264,       5264,       14,       16, 0x1ea8034d
+0,       5278,       5278,       14,       16, 0x4d000937
+0,       5292,       5292,       14,       16, 0x0f540231
+0,       5306,       5306,       14,       16, 0x402a073b
+0,       5320,       5320,       14,       16, 0x1d1403c3
+0,       5334,       5334,       14,       16, 0x24bc0690
+0,       5348,       5348,       14,       16, 0x583d0a78
+0,       5362,       5362,       14,       16, 0x35ec0631
+0,       5376,       5376,       14,       16, 0x40440708
+0,       5390,       5390,       14,       16, 0x1d8e03d9
+0,       5404,       5404,       14,       16, 0x15e2027d
+0,       5418,       5418,       14,       16, 0x3ac007fd
+0,       5432,       5432,       14,       16, 0x48320831
+0,       5446,       5446,       14,       16, 0x4f2c09ad
+0,       5460,       5460,       14,       16, 0x153402db
+0,       5474,       5474,       14,       16, 0x1b1c0341
+0,       5488,       5488,       14,       16, 0x357c0797
+0,       5502,       5502,       14,       16, 0x4584080f
+0,       5516,       5516,       14,       16, 0x4c8a0a17
+0,       5530,       5530,       14,       16, 0x1031026d
+0,       5544,       5544,       14,       16, 0x429808c1
+0,       5558,       5558,       14,       16, 0x27bc05ab
+0,       5572,       5572,       14,       16, 0x58030a7f
+0,       5586,       5586,       14,       16, 0x18380341
+0,       5600,       5600,       14,       16, 0x279204bd
+0,       5614,       5614,       14,       16, 0x31c206e1
+0,       5628,       5628,       14,       16, 0x23a00491
+0,       5642,       5642,       14,       16, 0x5bd40ba1
+0,       5656,       5656,       14,       16, 0x10620253
+0,       5670,       5670,       14,       16, 0x41690733
+0,       5684,       5684,       14,       16, 0x279a04e5
+0,       5698,       5698,       14,       16, 0x5b6a0b0f
+0,       5712,       5712,       14,       16, 0x591e0aa1
+0,       5726,       5726,       14,       16, 0x1ec00363
+0,       5740,       5740,       14,       16, 0x4404076b
+0,       5754,       5754,       14,       16, 0x1a140361
+0,       5768,       5768,       14,       16, 0x62020bd9
+0,       5782,       5782,       14,       16, 0x3abe07f9
+0,       5796,       5796,       14,       16, 0x3a7c0677
+0,       5810,       5810,       14,       16, 0x434007d1
+0,       5824,       5824,       14,       16, 0x1e0a0359
+0,       5838,       5838,       14,       16, 0x1b3c0330
+0,       5852,       5852,       14,       16, 0x33220754
+0,       5866,       5866,       14,       16, 0x47700855
+0,       5880,       5880,       14,       16, 0x46dd08b3
+0,       5894,       5894,       14,       16, 0x0ea60215
+0,       5908,       5908,       14,       16, 0x4048086d
+0,       5922,       5922,       14,       16, 0x2409052d
+0,       5936,       5936,       14,       16, 0x59920ab1
+0,       5950,       5950,       14,       16, 0x193e0361
+0,       5964,       5964,       14,       16, 0x2bbc053b
+0,       5978,       5978,       14,       16, 0x2ee0067d
+0,       5992,       5992,       14,       16, 0x2eec066b
+0,       6006,       6006,       14,       16, 0x5ca20bc3
+0,       6020,       6020,       14,       16, 0x11760275
+0,       6034,       6034,       14,       16, 0x35ac0649
+0,       6048,       6048,       14,       16, 0x30d0067f
+0,       6062,       6062,       14,       16, 0x5af80b0d
+0,       6076,       6076,       14,       16, 0x59990aac
+0,       6090,       6090,       14,       16, 0x34120585
+0,       6104,       6104,       14,       16, 0x47240809
+0,       6118,       6118,       14,       16, 0x20e20467
+0,       6132,       6132,       14,       16, 0x180d02d2
+0,       6146,       6146,       14,       16, 0x36ea07a8
+0,       6160,       6160,       14,       16, 0x3d6106db
+0,       6174,       6174,       14,       16, 0x48f8086f
+0,       6188,       6188,       14,       16, 0x176c0319
+0,       6202,       6202,       14,       16, 0x1b78033d
+0,       6216,       6216,       14,       16, 0x44f9095c
+0,       6230,       6230,       14,       16, 0x3c7006b9
+0,       6244,       6244,       14,       16, 0x518f0a04
+0,       6258,       6258,       14,       16, 0x133402af
+0,       6272,       6272,       14,       16, 0x3d780819
+0,       6286,       6286,       14,       16, 0x216604cb
+0,       6300,       6300,       14,       16, 0x4dde08b3
+0,       6314,       6314,       14,       16, 0x4a8609bf
+0,       6328,       6328,       14,       16, 0x2ab00530
+0,       6342,       6342,       14,       16, 0x38900739
+0,       6356,       6356,       14,       16, 0x21950485
+0,       6370,       6370,       14,       16, 0x5d940be5
+0,       6384,       6384,       14,       16, 0x12840297
+0,       6398,       6398,       14,       16, 0x335705aa
+0,       6412,       6412,       14,       16, 0x2f8c065b
+0,       6426,       6426,       14,       16, 0x59f60aed
+0,       6440,       6440,       14,       16, 0x582e0a5b
+0,       6454,       6454,       14,       16, 0x352105a7
+0,       6468,       6468,       14,       16, 0x447e073d
+0,       6482,       6482,       14,       16, 0x1fea0429
+0,       6496,       6496,       14,       16, 0x60a40bb5
+0,       6510,       6510,       14,       16, 0x4e1a09ed
+0,       6524,       6524,       14,       16, 0x3fa2071f
+0,       6538,       6538,       14,       16, 0x4bec08cd
+0,       6552,       6552,       14,       16, 0x1cea0335
+0,       6566,       6566,       14,       16, 0x451306df
+0,       6580,       6580,       14,       16, 0x32c9072a
+0,       6594,       6594,       14,       16, 0x4c9408fd
+0,       6608,       6608,       14,       16, 0x4ff509cd
+0,       6622,       6622,       14,       16, 0x0eca021b
+0,       6636,       6636,       14,       16, 0x3b3007d5
+0,       6650,       6650,       14,       16, 0x3e6408a5
+0,       6664,       6664,       14,       16, 0x48b908eb
+0,       6678,       6678,       14,       16, 0x4a1009a5
+0,       6692,       6692,       14,       16, 0x2c0e0563
+0,       6706,       6706,       14,       16, 0x3a6c07f5
+0,       6720,       6720,       14,       16, 0x2cc80641
+0,       6734,       6734,       14,       16, 0x5f090c16
+0,       6748,       6748,       14,       16, 0x137602b9
+0,       6762,       6762,       14,       16, 0x30cf0582
+0,       6776,       6776,       14,       16, 0x2d6c0617
+0,       6790,       6790,       14,       16, 0x236003d9
+0,       6804,       6804,       14,       16, 0x529809dd
+0,       6818,       6818,       14,       16, 0x225203c9
+0,       6832,       6832,       14,       16, 0x40a7076e
+0,       6846,       6846,       14,       16, 0x1f2203f3
+0,       6860,       6860,       14,       16, 0x16a00291
+0,       6874,       6874,       14,       16, 0x47960914
+0,       6888,       6888,       14,       16, 0x40c20743
+0,       6902,       6902,       14,       16, 0x4c0008d3
+0,       6916,       6916,       14,       16, 0x1bfe0313
+0,       6930,       6930,       14,       16, 0x50a80a61
+0,       6944,       6944,       14,       16, 0x2ebe06ca
+0,       6958,       6958,       14,       16, 0x40b40741
+0,       6972,       6972,       14,       16, 0x4d76096a
+0,       6986,       6986,       14,       16, 0x15da02f1
+0,       7000,       7000,       14,       16, 0x3a3007b1
+0,       7014,       7014,       14,       16, 0x36740746
+0,       7028,       7028,       14,       16, 0x4af20941
+0,       7042,       7042,       14,       16, 0x4a5809c9
+0,       7056,       7056,       14,       16, 0x18040387
+0,       7070,       7070,       14,       16, 0x381007af
+0,       7084,       7084,       14,       16, 0x391807ef
+0,       7098,       7098,       14,       16, 0x56080a47
+0,       7112,       7112,       14,       16, 0x14c802db
+0,       7126,       7126,       14,       16, 0x3780064b
+0,       7140,       7140,       14,       16, 0x394207d1
+0,       7154,       7154,       14,       16, 0x2bcc0597
+0,       7168,       7168,       14,       16, 0x50b3098e
+0,       7182,       7182,       14,       16, 0x22a603eb
+0,       7196,       7196,       14,       16, 0x3cfe06a3
+0,       7210,       7210,       14,       16, 0x1e720421
+0,       7224,       7224,       14,       16, 0x16ea028f
+0,       7238,       7238,       14,       16, 0x471c090d
+0,       7252,       7252,       14,       16, 0x31a805a7
+0,       7266,       7266,       14,       16, 0x4c6608dd
+0,       7280,       7280,       14,       16, 0x1acc02f1
+0,       7294,       7294,       14,       16, 0x4fb60a3f
+0,       7308,       7308,       14,       16, 0x3daa0869
+0,       7322,       7322,       14,       16, 0x41f00767
+0,       7336,       7336,       14,       16, 0x465108ac
+0,       7350,       7350,       14,       16, 0x15b202f3
+0,       7364,       7364,       14,       16, 0x41d0090d
+0,       7378,       7378,       14,       16, 0x2be8065e
+0,       7392,       7392,       14,       16, 0x40f20785
+0,       7406,       7406,       14,       16, 0x4c580a09
+0,       7420,       7420,       14,       16, 0x183a038d
+0,       7434,       7434,       14,       16, 0x362f076b
+0,       7448,       7448,       14,       16, 0x2ad105f9
+0,       7462,       7462,       14,       16, 0x56840a49
+0,       7476,       7476,       14,       16, 0x15f602fd
+0,       7490,       7490,       14,       16, 0x31660553
+0,       7504,       7504,       14,       16, 0x2842056d
+0,       7518,       7518,       14,       16, 0x26ee0447
+0,       7532,       7532,       14,       16, 0x5a7a0b7d
+0,       7546,       7546,       14,       16, 0x23d6040d
+0,       7560,       7560,       14,       16, 0x3c91069b
+0,       7574,       7574,       14,       16, 0x1c8403df
+0,       7588,       7588,       14,       16, 0x1586026d
+0,       7602,       7602,       14,       16, 0x482a0927
+0,       7616,       7616,       14,       16, 0x33e805eb
+0,       7630,       7630,       14,       16, 0x4d3d0869
+0,       7644,       7644,       14,       16, 0x19de02cf
+0,       7658,       7658,       14,       16, 0x64660c1d
+0,       7672,       7672,       14,       16, 0x3f610882
+0,       7686,       7686,       14,       16, 0x44c307cb
+0,       7700,       7700,       14,       16, 0x446207c1
+0,       7714,       7714,       14,       16, 0x2006039d
+0,       7728,       7728,       14,       16, 0x1f9a03d9
+0,       7742,       7742,       14,       16, 0x39d4081b
+0,       7756,       7756,       14,       16, 0x425207a9
+0,       7770,       7770,       14,       16, 0x4ebd0a5a
+0,       7784,       7784,       14,       16, 0x24eb0449
+0,       7798,       7798,       14,       16, 0x340c0727
+0,       7812,       7812,       14,       16, 0x27f00597
+0,       7826,       7826,       14,       16, 0x57640a6b
+0,       7840,       7840,       14,       16, 0x16da031d
+0,       7854,       7854,       14,       16, 0x24300477
+0,       7868,       7868,       14,       16, 0x351e0749
+0,       7882,       7882,       14,       16, 0x286a0460
+0,       7896,       7896,       14,       16, 0x546e0a0b
+0,       7910,       7910,       14,       16, 0x24c8042f
+0,       7924,       7924,       14,       16, 0x2f480539
+0,       7938,       7938,       14,       16, 0x1b7403bd
+0,       7952,       7952,       14,       16, 0x258c06a1
+0,       7966,       7966,       14,       16, 0x469e08f5
+0,       7980,       7980,       14,       16, 0x3628062f
+0,       7994,       7994,       14,       16, 0x2ecc04c6, S=1, Skip Samples,       10, 0x00300008
diff --git a/tests/ref/fate/raki-cafe-planar b/tests/ref/fate/raki-cafe-planar
new file mode 100644
index 0000000000..742add34ee
--- /dev/null
+++ b/tests/ref/fate/raki-cafe-planar
@@ -0,0 +1,578 @@
+#extradata 0:       64, 0x020f05ce
+#tb 0: 1/32000
+#media_type 0: audio
+#codec_id 0: adpcm_thp
+#sample_rate 0: 32000
+#channel_layout_name 0: stereo
+0,          0,          0,       14,       16, 0x16900343
+0,         14,         14,       14,       16, 0x31c206e1
+0,         28,         28,       14,       16, 0x23a00491
+0,         42,         42,       14,       16, 0x5bd40ba1
+0,         56,         56,       14,       16, 0x10620253
+0,         70,         70,       14,       16, 0x41690733
+0,         84,         84,       14,       16, 0x279a04e5
+0,         98,         98,       14,       16, 0x5b6a0b0f
+0,        112,        112,       14,       16, 0x591e0aa1
+0,        126,        126,       14,       16, 0x1ec00363
+0,        140,        140,       14,       16, 0x4404076b
+0,        154,        154,       14,       16, 0x1a140361
+0,        168,        168,       14,       16, 0x62020bd9
+0,        182,        182,       14,       16, 0x3abe07f9
+0,        196,        196,       14,       16, 0x3a7c0677
+0,        210,        210,       14,       16, 0x434007d1
+0,        224,        224,       14,       16, 0x1e0a0359
+0,        238,        238,       14,       16, 0x1b3c0330
+0,        252,        252,       14,       16, 0x33220754
+0,        266,        266,       14,       16, 0x47700855
+0,        280,        280,       14,       16, 0x46dd08b3
+0,        294,        294,       14,       16, 0x0ea60215
+0,        308,        308,       14,       16, 0x4048086d
+0,        322,        322,       14,       16, 0x2409052d
+0,        336,        336,       14,       16, 0x59920ab1
+0,        350,        350,       14,       16, 0x193e0361
+0,        364,        364,       14,       16, 0x2bbc053b
+0,        378,        378,       14,       16, 0x2ee0067d
+0,        392,        392,       14,       16, 0x2eec066b
+0,        406,        406,       14,       16, 0x5ca20bc3
+0,        420,        420,       14,       16, 0x11760275
+0,        434,        434,       14,       16, 0x35ac0649
+0,        448,        448,       14,       16, 0x30d0067f
+0,        462,        462,       14,       16, 0x5af80b0d
+0,        476,        476,       14,       16, 0x59990aac
+0,        490,        490,       14,       16, 0x34120585
+0,        504,        504,       14,       16, 0x47240809
+0,        518,        518,       14,       16, 0x20e20467
+0,        532,        532,       14,       16, 0x180d02d2
+0,        546,        546,       14,       16, 0x36ea07a8
+0,        560,        560,       14,       16, 0x3d6106db
+0,        574,        574,       14,       16, 0x48f8086f
+0,        588,        588,       14,       16, 0x176c0319
+0,        602,        602,       14,       16, 0x1b78033d
+0,        616,        616,       14,       16, 0x44f9095c
+0,        630,        630,       14,       16, 0x3c7006b9
+0,        644,        644,       14,       16, 0x518f0a04
+0,        658,        658,       14,       16, 0x133402af
+0,        672,        672,       14,       16, 0x3d780819
+0,        686,        686,       14,       16, 0x216604cb
+0,        700,        700,       14,       16, 0x4dde08b3
+0,        714,        714,       14,       16, 0x4a8609bf
+0,        728,        728,       14,       16, 0x2ab00530
+0,        742,        742,       14,       16, 0x38900739
+0,        756,        756,       14,       16, 0x21950485
+0,        770,        770,       14,       16, 0x5d940be5
+0,        784,        784,       14,       16, 0x12840297
+0,        798,        798,       14,       16, 0x335705aa
+0,        812,        812,       14,       16, 0x2f8c065b
+0,        826,        826,       14,       16, 0x59f60aed
+0,        840,        840,       14,       16, 0x582e0a5b
+0,        854,        854,       14,       16, 0x352105a7
+0,        868,        868,       14,       16, 0x447e073d
+0,        882,        882,       14,       16, 0x1fea0429
+0,        896,        896,       14,       16, 0x60a40bb5
+0,        910,        910,       14,       16, 0x4e1a09ed
+0,        924,        924,       14,       16, 0x3fa2071f
+0,        938,        938,       14,       16, 0x4bec08cd
+0,        952,        952,       14,       16, 0x1cea0335
+0,        966,        966,       14,       16, 0x451306df
+0,        980,        980,       14,       16, 0x32c9072a
+0,        994,        994,       14,       16, 0x4c9408fd
+0,       1008,       1008,       14,       16, 0x4ff509cd
+0,       1022,       1022,       14,       16, 0x0eca021b
+0,       1036,       1036,       14,       16, 0x3b3007d5
+0,       1050,       1050,       14,       16, 0x3e6408a5
+0,       1064,       1064,       14,       16, 0x48b908eb
+0,       1078,       1078,       14,       16, 0x4a1009a5
+0,       1092,       1092,       14,       16, 0x2c0e0563
+0,       1106,       1106,       14,       16, 0x3a6c07f5
+0,       1120,       1120,       14,       16, 0x2cc80641
+0,       1134,       1134,       14,       16, 0x5f090c16
+0,       1148,       1148,       14,       16, 0x137602b9
+0,       1162,       1162,       14,       16, 0x30cf0582
+0,       1176,       1176,       14,       16, 0x2d6c0617
+0,       1190,       1190,       14,       16, 0x236003d9
+0,       1204,       1204,       14,       16, 0x529809dd
+0,       1218,       1218,       14,       16, 0x225203c9
+0,       1232,       1232,       14,       16, 0x40a7076e
+0,       1246,       1246,       14,       16, 0x1f2203f3
+0,       1260,       1260,       14,       16, 0x16a00291
+0,       1274,       1274,       14,       16, 0x47960914
+0,       1288,       1288,       14,       16, 0x40c20743
+0,       1302,       1302,       14,       16, 0x4c0008d3
+0,       1316,       1316,       14,       16, 0x1bfe0313
+0,       1330,       1330,       14,       16, 0x50a80a61
+0,       1344,       1344,       14,       16, 0x2ebe06ca
+0,       1358,       1358,       14,       16, 0x40b40741
+0,       1372,       1372,       14,       16, 0x4d76096a
+0,       1386,       1386,       14,       16, 0x15da02f1
+0,       1400,       1400,       14,       16, 0x3a3007b1
+0,       1414,       1414,       14,       16, 0x36740746
+0,       1428,       1428,       14,       16, 0x4af20941
+0,       1442,       1442,       14,       16, 0x4a5809c9
+0,       1456,       1456,       14,       16, 0x18040387
+0,       1470,       1470,       14,       16, 0x381007af
+0,       1484,       1484,       14,       16, 0x391807ef
+0,       1498,       1498,       14,       16, 0x56080a47
+0,       1512,       1512,       14,       16, 0x14c802db
+0,       1526,       1526,       14,       16, 0x3780064b
+0,       1540,       1540,       14,       16, 0x394207d1
+0,       1554,       1554,       14,       16, 0x2bcc0597
+0,       1568,       1568,       14,       16, 0x50b3098e
+0,       1582,       1582,       14,       16, 0x22a603eb
+0,       1596,       1596,       14,       16, 0x3cfe06a3
+0,       1610,       1610,       14,       16, 0x1e720421
+0,       1624,       1624,       14,       16, 0x16ea028f
+0,       1638,       1638,       14,       16, 0x471c090d
+0,       1652,       1652,       14,       16, 0x31a805a7
+0,       1666,       1666,       14,       16, 0x4c6608dd
+0,       1680,       1680,       14,       16, 0x1acc02f1
+0,       1694,       1694,       14,       16, 0x4fb60a3f
+0,       1708,       1708,       14,       16, 0x3daa0869
+0,       1722,       1722,       14,       16, 0x41f00767
+0,       1736,       1736,       14,       16, 0x465108ac
+0,       1750,       1750,       14,       16, 0x15b202f3
+0,       1764,       1764,       14,       16, 0x41d0090d
+0,       1778,       1778,       14,       16, 0x2be8065e
+0,       1792,       1792,       14,       16, 0x40f20785
+0,       1806,       1806,       14,       16, 0x4c580a09
+0,       1820,       1820,       14,       16, 0x183a038d
+0,       1834,       1834,       14,       16, 0x362f076b
+0,       1848,       1848,       14,       16, 0x2ad105f9
+0,       1862,       1862,       14,       16, 0x56840a49
+0,       1876,       1876,       14,       16, 0x15f602fd
+0,       1890,       1890,       14,       16, 0x31660553
+0,       1904,       1904,       14,       16, 0x2842056d
+0,       1918,       1918,       14,       16, 0x26ee0447
+0,       1932,       1932,       14,       16, 0x5a7a0b7d
+0,       1946,       1946,       14,       16, 0x23d6040d
+0,       1960,       1960,       14,       16, 0x3c91069b
+0,       1974,       1974,       14,       16, 0x1c8403df
+0,       1988,       1988,       14,       16, 0x1586026d
+0,       2002,       2002,       14,       16, 0x482a0927
+0,       2016,       2016,       14,       16, 0x33e805eb
+0,       2030,       2030,       14,       16, 0x4d3d0869
+0,       2044,       2044,       14,       16, 0x19de02cf
+0,       2058,       2058,       14,       16, 0x64660c1d
+0,       2072,       2072,       14,       16, 0x3f610882
+0,       2086,       2086,       14,       16, 0x44c307cb
+0,       2100,       2100,       14,       16, 0x446207c1
+0,       2114,       2114,       14,       16, 0x2006039d
+0,       2128,       2128,       14,       16, 0x1f9a03d9
+0,       2142,       2142,       14,       16, 0x39d4081b
+0,       2156,       2156,       14,       16, 0x425207a9
+0,       2170,       2170,       14,       16, 0x4ebd0a5a
+0,       2184,       2184,       14,       16, 0x24eb0449
+0,       2198,       2198,       14,       16, 0x340c0727
+0,       2212,       2212,       14,       16, 0x27f00597
+0,       2226,       2226,       14,       16, 0x57640a6b
+0,       2240,       2240,       14,       16, 0x16da031d
+0,       2254,       2254,       14,       16, 0x24300477
+0,       2268,       2268,       14,       16, 0x351e0749
+0,       2282,       2282,       14,       16, 0x286a0460
+0,       2296,       2296,       14,       16, 0x546e0a0b
+0,       2310,       2310,       14,       16, 0x24c8042f
+0,       2324,       2324,       14,       16, 0x2f480539
+0,       2338,       2338,       14,       16, 0x1b7403bd
+0,       2352,       2352,       14,       16, 0x258c06a1
+0,       2366,       2366,       14,       16, 0x469e08f5
+0,       2380,       2380,       14,       16, 0x3628062f
+0,       2394,       2394,       14,       16, 0x406e0744
+0,       2408,       2408,       14,       16, 0x193002ad
+0,       2422,       2422,       14,       16, 0x15d0027f
+0,       2436,       2436,       14,       16, 0x3e3a085d
+0,       2450,       2450,       14,       16, 0x3720060f
+0,       2464,       2464,       14,       16, 0x436807a9
+0,       2478,       2478,       14,       16, 0x175e0333
+0,       2492,       2492,       14,       16, 0x408c08e9
+0,       2506,       2506,       14,       16, 0x36c6079b
+0,       2520,       2520,       14,       16, 0x4536080d
+0,       2534,       2534,       14,       16, 0x4e920a33
+0,       2548,       2548,       14,       16, 0x24c00447
+0,       2562,       2562,       14,       16, 0x31da06e3
+0,       2576,       2576,       14,       16, 0x1eda04dc
+0,       2590,       2590,       14,       16, 0x58740a8d
+0,       2604,       2604,       14,       16, 0x180e033f
+0,       2618,       2618,       14,       16, 0x26b004b9
+0,       2632,       2632,       14,       16, 0x32de0705
+0,       2646,       2646,       14,       16, 0x28e40549
+0,       2660,       2660,       14,       16, 0x5c2a0bbf
+0,       2674,       2674,       14,       16, 0x10160251
+0,       2688,       2688,       14,       16, 0x3094055f
+0,       2702,       2702,       14,       16, 0x348c0707
+0,       2716,       2716,       14,       16, 0x5c2c0b2f
+0,       2730,       2730,       14,       16, 0x587e0a85
+0,       2744,       2744,       14,       16, 0x1ebe0363
+0,       2758,       2758,       14,       16, 0x419d0758
+0,       2772,       2772,       14,       16, 0x192c0345
+0,       2786,       2786,       14,       16, 0x63080bf9
+0,       2800,       2800,       14,       16, 0x3c7e0839
+0,       2814,       2814,       14,       16, 0x394e0655
+0,       2828,       2828,       14,       16, 0x47b00845
+0,       2842,       2842,       14,       16, 0x1ecb0379
+0,       2856,       2856,       14,       16, 0x3f7e08c7
+0,       2870,       2870,       14,       16, 0x36a707c3
+0,       2884,       2884,       14,       16, 0x46760831
+0,       2898,       2898,       14,       16, 0x4f2c0a73
+0,       2912,       2912,       14,       16, 0x1278028d
+0,       2926,       2926,       14,       16, 0x2f68069f
+0,       2940,       2940,       14,       16, 0x250c056b
+0,       2954,       2954,       14,       16, 0x4cb00891
+0,       2968,       2968,       14,       16, 0x193e0361
+0,       2982,       2982,       14,       16, 0x295204fd
+0,       2996,       2996,       14,       16, 0x309406bf
+0,       3010,       3010,       14,       16, 0x28100505
+0,       3024,       3024,       14,       16, 0x5d360be1
+0,       3038,       3038,       14,       16, 0x11480273
+0,       3052,       3052,       14,       16, 0x428e0762
+0,       3066,       3066,       14,       16, 0x338006e1
+0,       3080,       3080,       14,       16, 0x5b1c0b0d
+0,       3094,       3094,       14,       16, 0x57680a63
+0,       3108,       3108,       14,       16, 0x25e00485
+0,       3122,       3122,       14,       16, 0x393506aa
+0,       3136,       3136,       14,       16, 0x17ae0289
+0,       3150,       3150,       14,       16, 0x4f640765
+0,       3164,       3164,       14,       16, 0x4bbe099d
+0,       3178,       3178,       14,       16, 0x3c3006b9
+0,       3192,       3192,       14,       16, 0x4864086b
+0,       3206,       3206,       14,       16, 0x1dfe0357
+0,       3220,       3220,       14,       16, 0x1b20033d
+0,       3234,       3234,       14,       16, 0x33be076f
+0,       3248,       3248,       14,       16, 0x49500897
+0,       3262,       3262,       14,       16, 0x497f09c5
+0,       3276,       3276,       14,       16, 0x112a0253
+0,       3290,       3290,       14,       16, 0x3ea6083b
+0,       3304,       3304,       14,       16, 0x31260719
+0,       3318,       3318,       14,       16, 0x599e0ab3
+0,       3332,       3332,       14,       16, 0x485c0981
+0,       3346,       3346,       14,       16, 0x2bc6052e
+0,       3360,       3360,       14,       16, 0x2dae065b
+0,       3374,       3374,       14,       16, 0x2e580667
+0,       3388,       3388,       14,       16, 0x5e060c03
+0,       3402,       3402,       14,       16, 0x12560295
+0,       3416,       3416,       14,       16, 0x31f7057a
+0,       3430,       3430,       14,       16, 0x2fc0065d
+0,       3444,       3444,       14,       16, 0x59f60aed
+0,       3458,       3458,       14,       16, 0x56800a3f
+0,       3472,       3472,       14,       16, 0x34fe05a7
+0,       3486,       3486,       14,       16, 0x37e6061a
+0,       3500,       3500,       14,       16, 0x1d9803bf
+0,       3514,       3514,       14,       16, 0x17380295
+0,       3528,       3528,       14,       16, 0x4bba0995
+0,       3542,       3542,       14,       16, 0x3d7006dd
+0,       3556,       3556,       14,       16, 0x4a460890
+0,       3570,       3570,       14,       16, 0x1d0c0335
+0,       3584,       3584,       14,       16, 0x1d450378
+0,       3598,       3598,       14,       16, 0x328e072f
+0,       3612,       3612,       14,       16, 0x3d8406db
+0,       3626,       3626,       14,       16, 0x51cc0abd
+0,       3640,       3640,       14,       16, 0x13580292
+0,       3654,       3654,       14,       16, 0x3db40817
+0,       3668,       3668,       14,       16, 0x2f9206b9
+0,       3682,       3682,       14,       16, 0x5ad00ad5
+0,       3696,       3696,       14,       16, 0x499709a3
+0,       3710,       3710,       14,       16, 0x289604e9
+0,       3724,       3724,       14,       16, 0x2b6e0617
+0,       3738,       3738,       14,       16, 0x2a7605f8
+0,       3752,       3752,       14,       16, 0x5db60be5
+0,       3766,       3766,       14,       16, 0x136a02b7
+0,       3780,       3780,       14,       16, 0x440607ab
+0,       3794,       3794,       14,       16, 0x2e7c0639
+0,       3808,       3808,       14,       16, 0x238304ae
+0,       3822,       3822,       14,       16, 0x56780a3b
+0,       3836,       3836,       14,       16, 0x223203c9
+0,       3850,       3850,       14,       16, 0x3c350713
+0,       3864,       3864,       14,       16, 0x1c9003a1
+0,       3878,       3878,       14,       16, 0x16d20283
+0,       3892,       3892,       14,       16, 0x37f80791
+0,       3906,       3906,       14,       16, 0x3f940721
+0,       3920,       3920,       14,       16, 0x4a680895
+0,       3934,       3934,       14,       16, 0x1c280315
+0,       3948,       3948,       14,       16, 0x1a52031b
+0,       3962,       3962,       14,       16, 0x34010754
+0,       3976,       3976,       14,       16, 0x3ea406ff
+0,       3990,       3990,       14,       16, 0x4add08ed
+0,       4004,       4004,       14,       16, 0x0f7e021d
+0,       4018,       4018,       14,       16, 0x3a0407b3
+0,       4032,       4032,       14,       16, 0x3886080d
+0,       4046,       4046,       14,       16, 0x49e1091e
+0,       4060,       4060,       14,       16, 0x49a909a7
+0,       4074,       4074,       14,       16, 0x1a2003c3
+0,       4088,       4088,       14,       16, 0x392e07d3
+0,       4102,       4102,       14,       16, 0x2b300603
+0,       4116,       4116,       14,       16, 0x5ea20c07
+0,       4130,       4130,       14,       16, 0x149802d9
+0,       4144,       4144,       14,       16, 0x2240040d
+0,       4158,       4158,       14,       16, 0x2c5c05f5
+0,       4172,       4172,       14,       16, 0x2bfa0599
+0,       4186,       4186,       14,       16, 0x54820a17
+0,       4200,       4200,       14,       16, 0x234003eb
+0,       4214,       4214,       14,       16, 0x408c0790
+0,       4228,       4228,       14,       16, 0x145e0223
+0,       4242,       4242,       14,       16, 0x5eb20b73
+0,       4256,       4256,       14,       16, 0x48a2094d
+0,       4270,       4270,       14,       16, 0x41d60765
+0,       4284,       4284,       14,       16, 0x40db07ac
+0,       4298,       4298,       14,       16, 0x18ea033d
+0,       4312,       4312,       14,       16, 0x50780a5f
+0,       4326,       4326,       14,       16, 0x3f50088b
+0,       4340,       4340,       14,       16, 0x40ce0745
+0,       4354,       4354,       14,       16, 0x4c44095f
+0,       4368,       4368,       14,       16, 0x12b80297
+0,       4382,       4382,       14,       16, 0x1e24039f
+0,       4396,       4396,       14,       16, 0x2c400690
+0,       4410,       4410,       14,       16, 0x3fe40763
+0,       4424,       4424,       14,       16, 0x4d540a25
+0,       4438,       4438,       14,       16, 0x25bb046b
+0,       4452,       4452,       14,       16, 0x364e077d
+0,       4466,       4466,       14,       16, 0x2baa0619
+0,       4480,       4480,       14,       16, 0x5fd40c29
+0,       4494,       4494,       14,       16, 0x158a02fb
+0,       4508,       4508,       14,       16, 0x2666048d
+0,       4522,       4522,       14,       16, 0x382007af
+0,       4536,       4536,       14,       16, 0x26d404fd
+0,       4550,       4550,       14,       16, 0x533a0aa9
+0,       4564,       4564,       14,       16, 0x22d003ed
+0,       4578,       4578,       14,       16, 0x3b080678
+0,       4592,       4592,       14,       16, 0x1ce203c1
+0,       4606,       4606,       14,       16, 0x1736028d
+0,       4620,       4620,       14,       16, 0x49cc0967
+0,       4634,       4634,       14,       16, 0x44d807c9
+0,       4648,       4648,       14,       16, 0x4a0007ee
+0,       4662,       4662,       14,       16, 0x198e035d
+0,       4676,       4676,       14,       16, 0x1b7c0335
+0,       4690,       4690,       14,       16, 0x3fef08b0
+0,       4704,       4704,       14,       16, 0x43ce07a9
+0,       4718,       4718,       14,       16, 0x446e07dd
+0,       4732,       4732,       14,       16, 0x16dc031c
+0,       4746,       4746,       14,       16, 0x1da0037f
+0,       4760,       4760,       14,       16, 0x2a5f063b
+0,       4774,       4774,       14,       16, 0x422407a7
+0,       4788,       4788,       14,       16, 0x4fc80a85
+0,       4802,       4802,       14,       16, 0x258c0469
+0,       4816,       4816,       14,       16, 0x33fe0729
+0,       4830,       4830,       14,       16, 0x2aa3067d
+0,       4844,       4844,       14,       16, 0x60c20c4b
+0,       4858,       4858,       14,       16, 0x16da031d
+0,       4872,       4872,       14,       16, 0x38af0674
+0,       4886,       4886,       14,       16, 0x354d074b
+0,       4900,       4900,       14,       16, 0x1cee0315
+0,       4914,       4914,       14,       16, 0x5b3a0b9d
+0,       4928,       4928,       14,       16, 0x2422040f
+0,       4942,       4942,       14,       16, 0x3e3c06db
+0,       4956,       4956,       14,       16, 0x1ee2040f
+0,       4970,       4970,       14,       16, 0x283206ed
+0,       4984,       4984,       14,       16, 0x44ef08bc
+0,       4998,       4998,       14,       16, 0x34fa060d
+0,       5012,       5012,       14,       16, 0x4040071f
+0,       5026,       5026,       14,       16, 0x193c02af
+0,       5040,       5040,       14,       16, 0x64660c1d
+0,       5054,       5054,       14,       16, 0x3f27087d
+0,       5068,       5068,       14,       16, 0x45f307ed
+0,       5082,       5082,       14,       16, 0x4bf70887
+0,       5096,       5096,       14,       16, 0x155e02d9
+0,       5110,       5110,       14,       16, 0x1ee603bb
+0,       5124,       5124,       14,       16, 0x374007ea
+0,       5138,       5138,       14,       16, 0x442407eb
+0,       5152,       5152,       14,       16, 0x45fa0889
+0,       5166,       5166,       14,       16, 0x24c00447
+0,       5180,       5180,       14,       16, 0x32de0705
+0,       5194,       5194,       14,       16, 0x28320592
+0,       5208,       5208,       14,       16, 0x56b00a4d
+0,       5222,       5222,       14,       16, 0x17d9032f
+0,       5236,       5236,       14,       16, 0x380e065b
+0,       5250,       5250,       14,       16, 0x32ef0707
+0,       5264,       5264,       14,       16, 0x1ea8034d
+0,       5278,       5278,       14,       16, 0x4d000937
+0,       5292,       5292,       14,       16, 0x0f540231
+0,       5306,       5306,       14,       16, 0x402a073b
+0,       5320,       5320,       14,       16, 0x1d1403c3
+0,       5334,       5334,       14,       16, 0x24bc0690
+0,       5348,       5348,       14,       16, 0x583d0a78
+0,       5362,       5362,       14,       16, 0x35ec0631
+0,       5376,       5376,       14,       16, 0x40440708
+0,       5390,       5390,       14,       16, 0x1d8e03d9
+0,       5404,       5404,       14,       16, 0x15e2027d
+0,       5418,       5418,       14,       16, 0x3ac007fd
+0,       5432,       5432,       14,       16, 0x48320831
+0,       5446,       5446,       14,       16, 0x4f2c09ad
+0,       5460,       5460,       14,       16, 0x153402db
+0,       5474,       5474,       14,       16, 0x1b1c0341
+0,       5488,       5488,       14,       16, 0x357c0797
+0,       5502,       5502,       14,       16, 0x4584080f
+0,       5516,       5516,       14,       16, 0x4c8a0a17
+0,       5530,       5530,       14,       16, 0x1031026d
+0,       5544,       5544,       14,       16, 0x429808c1
+0,       5558,       5558,       14,       16, 0x27bc05ab
+0,       5572,       5572,       14,       16, 0x58030a7f
+0,       5586,       5586,       14,       16, 0x18380341
+0,       5600,       5600,       14,       16, 0x279204bd
+0,       5614,       5614,       14,       16, 0x31c206e1
+0,       5628,       5628,       14,       16, 0x23a00491
+0,       5642,       5642,       14,       16, 0x5bd40ba1
+0,       5656,       5656,       14,       16, 0x10620253
+0,       5670,       5670,       14,       16, 0x41690733
+0,       5684,       5684,       14,       16, 0x279a04e5
+0,       5698,       5698,       14,       16, 0x5b6a0b0f
+0,       5712,       5712,       14,       16, 0x591e0aa1
+0,       5726,       5726,       14,       16, 0x1ec00363
+0,       5740,       5740,       14,       16, 0x4404076b
+0,       5754,       5754,       14,       16, 0x1a140361
+0,       5768,       5768,       14,       16, 0x62020bd9
+0,       5782,       5782,       14,       16, 0x3abe07f9
+0,       5796,       5796,       14,       16, 0x3a7c0677
+0,       5810,       5810,       14,       16, 0x434007d1
+0,       5824,       5824,       14,       16, 0x1e0a0359
+0,       5838,       5838,       14,       16, 0x1b3c0330
+0,       5852,       5852,       14,       16, 0x33220754
+0,       5866,       5866,       14,       16, 0x47700855
+0,       5880,       5880,       14,       16, 0x46dd08b3
+0,       5894,       5894,       14,       16, 0x0ea60215
+0,       5908,       5908,       14,       16, 0x4048086d
+0,       5922,       5922,       14,       16, 0x2409052d
+0,       5936,       5936,       14,       16, 0x59920ab1
+0,       5950,       5950,       14,       16, 0x193e0361
+0,       5964,       5964,       14,       16, 0x2bbc053b
+0,       5978,       5978,       14,       16, 0x2ee0067d
+0,       5992,       5992,       14,       16, 0x2eec066b
+0,       6006,       6006,       14,       16, 0x5ca20bc3
+0,       6020,       6020,       14,       16, 0x11760275
+0,       6034,       6034,       14,       16, 0x35ac0649
+0,       6048,       6048,       14,       16, 0x30d0067f
+0,       6062,       6062,       14,       16, 0x5af80b0d
+0,       6076,       6076,       14,       16, 0x59990aac
+0,       6090,       6090,       14,       16, 0x34120585
+0,       6104,       6104,       14,       16, 0x47240809
+0,       6118,       6118,       14,       16, 0x20e20467
+0,       6132,       6132,       14,       16, 0x180d02d2
+0,       6146,       6146,       14,       16, 0x36ea07a8
+0,       6160,       6160,       14,       16, 0x3d6106db
+0,       6174,       6174,       14,       16, 0x48f8086f
+0,       6188,       6188,       14,       16, 0x176c0319
+0,       6202,       6202,       14,       16, 0x1b78033d
+0,       6216,       6216,       14,       16, 0x44f9095c
+0,       6230,       6230,       14,       16, 0x3c7006b9
+0,       6244,       6244,       14,       16, 0x518f0a04
+0,       6258,       6258,       14,       16, 0x133402af
+0,       6272,       6272,       14,       16, 0x3d780819
+0,       6286,       6286,       14,       16, 0x216604cb
+0,       6300,       6300,       14,       16, 0x4dde08b3
+0,       6314,       6314,       14,       16, 0x4a8609bf
+0,       6328,       6328,       14,       16, 0x2ab00530
+0,       6342,       6342,       14,       16, 0x38900739
+0,       6356,       6356,       14,       16, 0x21950485
+0,       6370,       6370,       14,       16, 0x5d940be5
+0,       6384,       6384,       14,       16, 0x12840297
+0,       6398,       6398,       14,       16, 0x335705aa
+0,       6412,       6412,       14,       16, 0x2f8c065b
+0,       6426,       6426,       14,       16, 0x59f60aed
+0,       6440,       6440,       14,       16, 0x582e0a5b
+0,       6454,       6454,       14,       16, 0x352105a7
+0,       6468,       6468,       14,       16, 0x447e073d
+0,       6482,       6482,       14,       16, 0x1fea0429
+0,       6496,       6496,       14,       16, 0x60a40bb5
+0,       6510,       6510,       14,       16, 0x4e1a09ed
+0,       6524,       6524,       14,       16, 0x3fa2071f
+0,       6538,       6538,       14,       16, 0x4bec08cd
+0,       6552,       6552,       14,       16, 0x1cea0335
+0,       6566,       6566,       14,       16, 0x451306df
+0,       6580,       6580,       14,       16, 0x32c9072a
+0,       6594,       6594,       14,       16, 0x4c9408fd
+0,       6608,       6608,       14,       16, 0x4ff509cd
+0,       6622,       6622,       14,       16, 0x0eca021b
+0,       6636,       6636,       14,       16, 0x3b3007d5
+0,       6650,       6650,       14,       16, 0x3e6408a5
+0,       6664,       6664,       14,       16, 0x48b908eb
+0,       6678,       6678,       14,       16, 0x4a1009a5
+0,       6692,       6692,       14,       16, 0x2c0e0563
+0,       6706,       6706,       14,       16, 0x3a6c07f5
+0,       6720,       6720,       14,       16, 0x2cc80641
+0,       6734,       6734,       14,       16, 0x5f090c16
+0,       6748,       6748,       14,       16, 0x137602b9
+0,       6762,       6762,       14,       16, 0x30cf0582
+0,       6776,       6776,       14,       16, 0x2d6c0617
+0,       6790,       6790,       14,       16, 0x236003d9
+0,       6804,       6804,       14,       16, 0x529809dd
+0,       6818,       6818,       14,       16, 0x225203c9
+0,       6832,       6832,       14,       16, 0x40a7076e
+0,       6846,       6846,       14,       16, 0x1f2203f3
+0,       6860,       6860,       14,       16, 0x16a00291
+0,       6874,       6874,       14,       16, 0x47960914
+0,       6888,       6888,       14,       16, 0x40c20743
+0,       6902,       6902,       14,       16, 0x4c0008d3
+0,       6916,       6916,       14,       16, 0x1bfe0313
+0,       6930,       6930,       14,       16, 0x50a80a61
+0,       6944,       6944,       14,       16, 0x2ebe06ca
+0,       6958,       6958,       14,       16, 0x40b40741
+0,       6972,       6972,       14,       16, 0x4d76096a
+0,       6986,       6986,       14,       16, 0x15da02f1
+0,       7000,       7000,       14,       16, 0x3a3007b1
+0,       7014,       7014,       14,       16, 0x36740746
+0,       7028,       7028,       14,       16, 0x4af20941
+0,       7042,       7042,       14,       16, 0x4a5809c9
+0,       7056,       7056,       14,       16, 0x18040387
+0,       7070,       7070,       14,       16, 0x381007af
+0,       7084,       7084,       14,       16, 0x391807ef
+0,       7098,       7098,       14,       16, 0x56080a47
+0,       7112,       7112,       14,       16, 0x14c802db
+0,       7126,       7126,       14,       16, 0x3780064b
+0,       7140,       7140,       14,       16, 0x394207d1
+0,       7154,       7154,       14,       16, 0x2bcc0597
+0,       7168,       7168,       14,       16, 0x50b3098e
+0,       7182,       7182,       14,       16, 0x22a603eb
+0,       7196,       7196,       14,       16, 0x3cfe06a3
+0,       7210,       7210,       14,       16, 0x1e720421
+0,       7224,       7224,       14,       16, 0x16ea028f
+0,       7238,       7238,       14,       16, 0x471c090d
+0,       7252,       7252,       14,       16, 0x31a805a7
+0,       7266,       7266,       14,       16, 0x4c6608dd
+0,       7280,       7280,       14,       16, 0x1acc02f1
+0,       7294,       7294,       14,       16, 0x4fb60a3f
+0,       7308,       7308,       14,       16, 0x3daa0869
+0,       7322,       7322,       14,       16, 0x41f00767
+0,       7336,       7336,       14,       16, 0x465108ac
+0,       7350,       7350,       14,       16, 0x15b202f3
+0,       7364,       7364,       14,       16, 0x41d0090d
+0,       7378,       7378,       14,       16, 0x2be8065e
+0,       7392,       7392,       14,       16, 0x40f20785
+0,       7406,       7406,       14,       16, 0x4c580a09
+0,       7420,       7420,       14,       16, 0x183a038d
+0,       7434,       7434,       14,       16, 0x362f076b
+0,       7448,       7448,       14,       16, 0x2ad105f9
+0,       7462,       7462,       14,       16, 0x56840a49
+0,       7476,       7476,       14,       16, 0x15f602fd
+0,       7490,       7490,       14,       16, 0x31660553
+0,       7504,       7504,       14,       16, 0x2842056d
+0,       7518,       7518,       14,       16, 0x26ee0447
+0,       7532,       7532,       14,       16, 0x5a7a0b7d
+0,       7546,       7546,       14,       16, 0x23d6040d
+0,       7560,       7560,       14,       16, 0x3c91069b
+0,       7574,       7574,       14,       16, 0x1c8403df
+0,       7588,       7588,       14,       16, 0x1586026d
+0,       7602,       7602,       14,       16, 0x482a0927
+0,       7616,       7616,       14,       16, 0x33e805eb
+0,       7630,       7630,       14,       16, 0x4d3d0869
+0,       7644,       7644,       14,       16, 0x19de02cf
+0,       7658,       7658,       14,       16, 0x64660c1d
+0,       7672,       7672,       14,       16, 0x3f610882
+0,       7686,       7686,       14,       16, 0x44c307cb
+0,       7700,       7700,       14,       16, 0x446207c1
+0,       7714,       7714,       14,       16, 0x2006039d
+0,       7728,       7728,       14,       16, 0x1f9a03d9
+0,       7742,       7742,       14,       16, 0x39d4081b
+0,       7756,       7756,       14,       16, 0x425207a9
+0,       7770,       7770,       14,       16, 0x4ebd0a5a
+0,       7784,       7784,       14,       16, 0x24eb0449
+0,       7798,       7798,       14,       16, 0x340c0727
+0,       7812,       7812,       14,       16, 0x27f00597
+0,       7826,       7826,       14,       16, 0x57640a6b
+0,       7840,       7840,       14,       16, 0x16da031d
+0,       7854,       7854,       14,       16, 0x24300477
+0,       7868,       7868,       14,       16, 0x351e0749
+0,       7882,       7882,       14,       16, 0x286a0460
+0,       7896,       7896,       14,       16, 0x546e0a0b
+0,       7910,       7910,       14,       16, 0x24c8042f
+0,       7924,       7924,       14,       16, 0x2f480539
+0,       7938,       7938,       14,       16, 0x1b7403bd
+0,       7952,       7952,       14,       16, 0x258c06a1
+0,       7966,       7966,       14,       16, 0x469e08f5
+0,       7980,       7980,       14,       16, 0x3628062f
+0,       7994,       7994,       14,       16, 0x2ecc04c6, S=1, Skip Samples,       10, 0x00300008
diff --git a/tests/ref/fate/raki-nx-opus b/tests/ref/fate/raki-nx-opus
new file mode 100644
index 0000000000..0b47bb43b8
--- /dev/null
+++ b/tests/ref/fate/raki-nx-opus
@@ -0,0 +1,19 @@
+#extradata 0:       19, 0x3c4604cf
+#tb 0: 1/48000
+#media_type 0: audio
+#codec_id 0: opus
+#sample_rate 0: 48000
+#channel_layout_name 0: stereo
+0,          0,          0,      960,      757, 0x4c7b7940, S=1, Skip Samples,       10, 0x04b00078
+0,        960,        960,      960,      470, 0xd8fef799
+0,       1920,       1920,      960,      468, 0x9c96e75f
+0,       2880,       2880,      960,      460, 0x6dd0f6bd
+0,       3840,       3840,      960,      462, 0x9a90e0ca
+0,       4800,       4800,      960,      460, 0x23f4daa5
+0,       5760,       5760,      960,      457, 0x1399dc25
+0,       6720,       6720,      960,      470, 0x189aeac5
+0,       7680,       7680,      960,      464, 0x9326e3da
+0,       8640,       8640,      960,      467, 0xfc93e633
+0,       9600,       9600,      960,      472, 0xecdee674
+0,      10560,      10560,      960,      467, 0x2993e0d8
+0,      11520,      11520,      960,      699, 0xc6855ae7, S=1, Skip Samples,       10, 0x02750069
diff --git a/tests/ref/fate/raki-ps3-mp3 b/tests/ref/fate/raki-ps3-mp3
new file mode 100644
index 0000000000..0bdd7b550d
--- /dev/null
+++ b/tests/ref/fate/raki-ps3-mp3
@@ -0,0 +1,7 @@
+#tb 0: 1/48000
+#media_type 0: audio
+#codec_id 0: mp3
+#sample_rate 0: 48000
+#channel_layout_name 0: stereo
+0,          0,          0,     1152,     4096, 0xc2f1850c
+0,       1152,       1152,     1152,     2816, 0x7f92d047
diff --git a/tests/ref/fate/raki-ps3-mp3-prefixed b/tests/ref/fate/raki-ps3-mp3-prefixed
new file mode 100644
index 0000000000..0bdd7b550d
--- /dev/null
+++ b/tests/ref/fate/raki-ps3-mp3-prefixed
@@ -0,0 +1,7 @@
+#tb 0: 1/48000
+#media_type 0: audio
+#codec_id 0: mp3
+#sample_rate 0: 48000
+#channel_layout_name 0: stereo
+0,          0,          0,     1152,     4096, 0xc2f1850c
+0,       1152,       1152,     1152,     2816, 0x7f92d047
diff --git a/tests/ref/fate/raki-wii-pcm b/tests/ref/fate/raki-wii-pcm
new file mode 100644
index 0000000000..a12771f54f
--- /dev/null
+++ b/tests/ref/fate/raki-wii-pcm
@@ -0,0 +1,17 @@
+#tb 0: 1/48000
+#media_type 0: audio
+#codec_id 0: pcm_s16be
+#sample_rate 0: 48000
+#channel_layout_name 0: stereo
+0,          0,          0,     1024,     4096, 0x109fc82e
+0,       1024,       1024,     1024,     4096, 0x60ddf5cc
+0,       2048,       2048,     1024,     4096, 0xc25cf063
+0,       3072,       3072,     1024,     4096, 0x1f4bd477
+0,       4096,       4096,     1024,     4096, 0x5ba90ac4
+0,       5120,       5120,     1024,     4096, 0xcd4ad792
+0,       6144,       6144,     1024,     4096, 0xb05bef85
+0,       7168,       7168,     1024,     4096, 0x6387f57f
+0,       8192,       8192,     1024,     4096, 0x0e04cbb8
+0,       9216,       9216,     1024,     4096, 0x826c0577
+0,      10240,      10240,     1024,     4096, 0xa694e3f2
+0,      11264,      11264,      736,     2944, 0x4ea3c76f
diff --git a/tests/ref/fate/raki-win-ms-adpcm b/tests/ref/fate/raki-win-ms-adpcm
new file mode 100644
index 0000000000..7e4b710b96
--- /dev/null
+++ b/tests/ref/fate/raki-win-ms-adpcm
@@ -0,0 +1,18 @@
+#extradata 0:       32, 0x5f77078c
+#tb 0: 1/48000
+#media_type 0: audio
+#codec_id 0: adpcm_ms
+#sample_rate 0: 48000
+#channel_layout_name 0: stereo
+0,          0,          0,     1012,     1024, 0xf3da042d
+0,       1012,       1012,     1012,     1024, 0xfce3187c
+0,       2024,       2024,     1012,     1024, 0x87001979
+0,       3036,       3036,     1012,     1024, 0x03a60bc0
+0,       4048,       4048,     1012,     1024, 0x5a651033
+0,       5060,       5060,     1012,     1024, 0x708215dc
+0,       6072,       6072,     1012,     1024, 0xb30f0e40
+0,       7084,       7084,     1012,     1024, 0x2cee0977
+0,       8096,       8096,     1012,     1024, 0x64a817ac
+0,       9108,       9108,     1012,     1024, 0xa25a13b6
+0,      10120,      10120,     1012,     1024, 0xacba0738
+0,      11132,      11132,     1012,     1024, 0x78090ae0
diff --git a/tests/ref/fate/raki-win-pcm b/tests/ref/fate/raki-win-pcm
new file mode 100644
index 0000000000..27fd3ab022
--- /dev/null
+++ b/tests/ref/fate/raki-win-pcm
@@ -0,0 +1,17 @@
+#tb 0: 1/48000
+#media_type 0: audio
+#codec_id 0: pcm_s16le
+#sample_rate 0: 48000
+#channel_layout_name 0: stereo
+0,          0,          0,     1024,     4096, 0x2ea0c82e
+0,       1024,       1024,     1024,     4096, 0x40dcf5cc
+0,       2048,       2048,     1024,     4096, 0xab9ef063
+0,       3072,       3072,     1024,     4096, 0x3a4fd477
+0,       4096,       4096,     1024,     4096, 0x27dd0ac4
+0,       5120,       5120,     1024,     4096, 0xe423d792
+0,       6144,       6144,     1024,     4096, 0xa7b1ef85
+0,       7168,       7168,     1024,     4096, 0x381ff57f
+0,       8192,       8192,     1024,     4096, 0x2f43cbb8
+0,       9216,       9216,     1024,     4096, 0x4c8b0577
+0,      10240,      10240,     1024,     4096, 0xabefe3f2
+0,      11264,      11264,      736,     2944, 0x32abc76f
diff --git a/tests/ref/fate/raki-x360-xma2 b/tests/ref/fate/raki-x360-xma2
new file mode 100644
index 0000000000..62635f2f3e
--- /dev/null
+++ b/tests/ref/fate/raki-x360-xma2
@@ -0,0 +1,11 @@
+#extradata 0:       34, 0x3a1a02a4
+#tb 0: 1/48000
+#media_type 0: audio
+#codec_id 0: xma2
+#sample_rate 0: 48000
+#channel_layout_name 0: stereo
+0,          0,          0,     2560,     2048, 0x972ce0c3
+0,       2560,       2560,     3072,     2048, 0x21c81255
+0,       5632,       5632,     3072,     2048, 0x87de1b78
+0,       8704,       8704,     3072,     2048, 0x797ef8d2
+0,      11776,      11776,     1024,     2048, 0xe2cd4d08
-- 
2.52.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.