RRiffMeadow
AI-werkruimte voor code

Doorlopen van RIFF-blokgrenzen

Loop door maximaal 128 blokken van RIFF WAVE met 12–1048576 bytes en exact opgegeven grootte.

● ● ●RiffMeadow●
Werkprocessen · Doorlopen van RIFF-blokgrenzen ×
def riff_chunks(wire):
    if type(wire) is not bytes or not 12 <= len(wire) <= 1048576:
        raise ValueError("riff.input")
    if wire[:4] != b"RIFF" or wire[8:12] != b"WAVE" or int.from_bytes(wire[4:8], "little")+8 != len(wire):
        raise ValueError("riff.header")
    chunks, pos = [], 12
    while pos < len(wire):
        if len(chunks) == 128 or pos+8 > len(wire):
            raise ValueError("riff.chunk")
        tag = wire[pos:pos+4]
        size = int.from_bytes(wire[pos+4:pos+8], "little")
        start, stop = pos+8, pos+8+size
        next_pos = stop+(size & 1)
        if next_pos > len(wire):
            raise ValueError("riff.truncated")
        chunks.append((tag, wire[start:stop]))
        pos = next_pos
    return chunks
✳Doorlopen van RIFF-blokgrenzen
✓ WijzigingenControleer vóór het toepassen ↗
Illustratie van de werkruimte
01

Controleer vóór het toepassen

Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen.

02

Modellen

Stel een OpenAI-compatibel of Anthropic-endpoint in met de basis-URL en zo nodig een API-sleutel. Test de verbinding. Een lokale modelserver moet actief zijn; externe hulpmiddelen kunnen apart gegevens versturen.

03

Project

Test onbekende blokken en oneven opvulling, en weiger afgebroken koppen of gegevens zonder audio te decoderen.

Werkprocessen

Doorlopen van RIFF-blokgrenzen

Werkprocessen ↗
Werkprocessen
def riff_chunks(wire):
    if type(wire) is not bytes or not 12 <= len(wire) <= 1048576:
        raise ValueError("riff.input")
    if wire[:4] != b"RIFF" or wire[8:12] != b"WAVE" or int.from_bytes(wire[4:8], "little")+8 != len(wire):
        raise ValueError("riff.header")
    chunks, pos = [], 12
    while pos < len(wire):
        if len(chunks) == 128 or pos+8 > len(wire):
            raise ValueError("riff.chunk")
        tag = wire[pos:pos+4]
        size = int.from_bytes(wire[pos+4:pos+8], "little")
        start, stop = pos+8, pos+8+size
        next_pos = stop+(size & 1)
        if next_pos > len(wire):
            raise ValueError("riff.truncated")
        chunks.append((tag, wire[start:stop]))
        pos = next_pos
    return chunks
AI-werkruimte voor code

Beoordeel een bestandsimport van de header tot de laatste chunk

RiffMeadow brengt onderhoud van bestandsformaten naar een programmeerwerkruimte voor Windows met je projectbroncode en een gesprek met een verbonden model. Begin bij het importgedrag dat je wilt wijzigen en bepaal wat de toepassing met ontlede chunks doet. Vraag het model dat pad te onderzoeken voordat het wijzigingen aan een afzonderlijke lengteberekening voorstelt.

Een taak met riff_chunks.py kan een RIFF-bestand onderzoeken waarvan een chunk met oneven grootte een opvulbyte vóór de volgende header nodig heeft. Geef een klein bytetestgeval en de verwachte chunkgrenzen. Beoordeel de opgegeven containerlengte en het gedrag bij afkapping samen, zodat het voorstel uitlegt waarom de volgende leesactie op die positie begint.

Voer na onderzoek van de wijziging geldige en afgeknotte testgevallen uit in je eigen ontwikkelomgeving en controleer het importresultaat via de afnemer. Neem een onbekende chunktag op als de toepassing die moet behouden of overslaan. Houd het doorlopen van het formaat gescheiden van de interpretatie door de toepassing: het vinden van chunkbytes bewijst niet dat hun inhoud geschikt is voor elke latere bewerking.

Configureer voor modelondersteuning een ondersteund OpenAI-compatibel of Anthropic-eindpunt en inloggegevens waar vereist. Een abliterated AI-model kan worden geselecteerd waar beschikbaar, met beperkingen die de aanbieder bepaalt. Tools en contextcapaciteit hangen af van het model en de server; het testgeval en het verwachte importgedrag vormen de concrete basis om de code te accepteren.

Voordat je een lezer voor bestanden met chunks wijzigt

Waarom heeft een oneven chunklengte een eigen testgeval nodig?

Opvulling beïnvloedt waar de volgende header begint, dus een voorbeeld met even lengte kan een offsetfout missen. Geef een bestand met nog een chunk na de opgevulde chunk. Controleer de geretourneerde grenzen en eindpositie, niet alleen of de eerste chunk is gevonden.

Moeten onbekende tags een import laten mislukken?

Bepaal dat op basis van het deel van het formaat en het toepassingsgedrag dat je wilt ondersteunen. Doorlopen en interpreteren kunnen verschillende beleidsregels gebruiken. Vraag het model de afnemer te onderzoeken voordat het tagafhandeling wijzigt en neem een onbekende tag in de testgevallen op als die wordt geaccepteerd.

Wat moet een test met een afgeknot bestand tonen?

Geef aan welke opgegeven grens de aangeleverde bytes overschrijdt en welk afwijzingsgedrag de aanroepende code verwacht. Neem naar gelang het geval een ingekorte header of inhoud op. Beoordeel het importpad, zodat de interface een gedeeltelijke ontleding niet voor een succesvol geladen bestand kan aanzien.

Bewijst succesvol doorlopen van chunks dat de audio geldig is?

Nee. Het bewijst alleen de grenscontroles die die code en haar tests dekken. Interpretatie van audiometadata of samplegegevens behoort tot aanvullende logica. Richt de beoordeling op de gevraagde parserwijziging en verifieer latere stadia wanneer de toepassing ervan afhangt.

Download voor Windows ↗

RiffMeadow · Bijgewerkt 2026-10-25