Delen via


Kruisingen van gegevensbereik in AVStream

Een gegevensindeling is één set parameters die een bepaald aspect van een verbinding beschrijven. Een audiogegevensindeling kan bijvoorbeeld een bepaalde indeling van audio specificeren met X samples per seconde en Y bits per sample.

Een gegevensbereik geeft een reeks geldige parameters op. Een audiogegevensbereik kan bijvoorbeeld een bepaalde indeling van audio opgeven bij A-B-voorbeelden per seconde en C-D-bits per voorbeeld.

De minidriver biedt een lijst met gegevensbereiken die worden ondersteund voor een specifieke pin in het DataRanges-lid van de bijbehorende KSPIN_DESCRIPTOR structuur.

In AVStream kunnen minidrivers hun eigen gegevensbereiksnijpunthandlers leveren door een aanwijzer naar een door minidriver geleverde callbackroutine op te geven in het IntersectHandler-lid van een KSPIN_DESCRIPTOR_EX. Als u AVStream de bereiken wilt laten kruisen, stelt u deze parameter in op NULL. Zie AVStrMiniIntersectHandlerEx voor meer informatie over het definiëren van de callback-routine.

Als een minidriver een intersectiehandler biedt, ontvangt de minidriver, wanneer een snijpunt moet worden gemaakt, twee gegevensbereiken die overeenkomen in primair type, subformaat en specifier. Daarnaast komen de vereiste kenmerken van de gegevensbereiken overeen.

Als de bereiken elkaar kruisen en voldoende bufferruimte wordt opgegeven in de Data-parameter van de AVStrMiniIntersectHandlerEx-callbackroutine, kiest de snijpuntroutine een indeling in het snijpunt en retourneert deze, waardoor de aanroeper het in de buffer ontvangt die wordt verwezen door Data.

Als de twee gegevensbereiken niet overlappen, retourneert de handler STATUS_NO_MATCH.

Als de minidriver een AVStrMiniPinSetDataFormat-verzending heeft opgegeven, roept AVStream deze verzending aan om de minidriver te informeren dat AVStream een specifieke indeling op de pin instelt. Geef een aanwijzer voor uw callbackroutine AVStrMiniPinSetDataFormat in het `SetDataFormat`-lid van de KSPIN_DISPATCH structuur. (Minidrivers die clients van streamklasse zijn, ontvangen SRB_SET_DATA_FORMAT in plaats van AVStrMiniPinSetDataFormat.)

De minidriver kan een voorgestelde indeling weigeren door STATUS_NO_MATCH van AVStrMiniPinSetDataFormat te retourneren.

Naast de eerste aanroep van AVStrMiniPinSetDataFormat voordat de pincode wordt gemaakt, kan uw minidriver een tweede AVStrMiniPinSetDataFormat-aanroep ontvangen vlak voordat de pincode overgaat naar de status RUN. Als uw AVStream- of streamklasseclient een minidriver voor videoopname is en u een dergelijke melding ontvangt, bevat deze verzending de werkelijke surface-parameters. Indien mogelijk zou de minidriver bij deze tweede formaatwijziging niet moeten falen. Neem niet aan dat er een tweede verzendoproep plaatsvindt.

De minidriver moet gegevens vastleggen in elke indeling die is opgenomen in de laatste geslaagde AVStrMiniPinSetDataFormat-verzending .