Dela via


Implementering och support för kodare

I Windows XP Service Pack 1 definierade Microsoft tre egenskapsuppsättningar för kernelströmning och en uppräkning i ksmedia.h för att stödja enbart videokodare. Varje egenskapsuppsättning innehåller en enda egenskap. Med andra ord får varje egenskap en egen egenskapsuppsättning. Om din drivrutin gör get-property- eller Set-property-anrop anger du egenskapsuppsättningens GUID (enligt definitionen i ksmedia.h) i KSPROPERTY-strukturensUppsättningsmedlem och noll i ID-medlemmen när du konfigurerar anropet:

Egenskapsuppsättning Beskrivning
ENCAPIPARAM_BITRATE

Implementera den här egenskapen för att ange kodningsbithastigheter som stöds av kodarenheten. Mer information finns i Kodexempel för kodare .

ENCAPIPARAM_BITRATE_MODE

Implementera den här egenskapen för att ange de kodningslägen som stöds av enheten. Den här egenskapsuppsättningen använder VIDEOENCODER_BITRATE_MODE uppräkning för att ange vilka lägen som stöds. Mer information finns i Kodexempel för kodare .

ENCAPIPARAM_PEAK_BITRATE

Implementera den här egenskapen för att ange den maximala kodningsbithastigheten för enheten.

Klienter får åtkomst till dessa egenskaper genom att härleda COM-gränssnittet IVideoEncoder från COM-gränssnittet IEncoderAPI (beskrivs i dokumentationen för Windows Software Development Kit (SDK).

En minidrivrutin måste ange standardvärden för var och en av egenskaperna ENCAPIPARAM_Xxx. Ämnet Kodarkodexempel visar hur du anger standardegenskapsvärden. Under utvecklingen och felsökningen av ett kodarfilter kan den aktuella egenskapssidan utlösas från en minidrivrutin som stödjer ENCAPIPARAM_BITRATE-egenskapsuppsättningen.

I DirectX 9.0 definierades ytterligare sex egenskapsuppsättningar och en händelseuppsättning i ksmedia.h för att ge bättre stöd för en bredare mängd olika kodare, inklusive ljudkodare. Precis som med ENCAPIPARAM_Xxx-egenskaper får varje egenskap en egen egenskapsuppsättning:

Egenskapsuppsättning Beskrivning
CODECAPI_VIDEO_ENCODER

Om enheten stöder kodning av videoströmmar (inklusive extra ljud som TV-ljud) implementerar du stöd för den här egenskapsuppsättningen.

CODECAPI_AUDIO_ENCODER

Om enheten är en kodare med endast ljud kan du implementera stöd för den här egenskapsuppsättningen i stället för CODECAPI_VIDEO_ENCODER.

CODECAPI_SETALLDEFAULTS

Implementera den här egenskapen inställd för att återställa alla kodarenhetens interna inställningar, till exempel kodningsbithastighet och kodningsläge till deras standardvärden.

CODECAPI_ALLSETTINGS

Implementera den här egenskapen för att kommunicera de aktuella inställningarna för kodarenheten. Den här egenskapsuppsättningen används för kommunikation till och från klienter.

CODECAPI_SUPPORTSEVENTS

Om enheten stöder händelser från användarläge – till exempel för att ändra kodningsläget, bithastigheten eller andra inställningar – implementerar du den här egenskapsuppsättningen. Om du implementerar den här egenskapsuppsättningen måste du även implementera stöd för händelsen CODECAPI_CHANGELISTS.

CODECAPI_CURRENTCHANGELIST

Implementera den här egenskapsuppsättningen för att avgöra vilka kodarparametrar som ändrades i ett tidigare anrop för att ange en eller flera kodaregenskaper.

Händelseuppsättning Beskrivning

CODECAPI_CHANGELISTS

Om enheten har stöd för att svara på användarlägeshändelser via den CODECAPI_SUPPORTSEVENTS egenskapsuppsättningen implementerar du den här händelseuppsättningen för att returnera en lista med kodarinställningar som har ändrats till följd av en klients tidigare Set-property-anrop till antingen CODECAPI_SETALLDEFAULTS eller CODECAPI_ALLSETTINGS.

Klienter får åtkomst till dessa egenskaper via ICodecAPI COM-gränssnittet (beskrivs i Windows SDK-dokumentationen). Mer information om COM-gränssnitten finns i Installation och registrering av kodare , inklusive hur du anger vilket gränssnitt som KsProxy ska exponera.

En minidrivrutin bör implementera stöd för grundläggande frågor om "get"-egenskaper. Ämnet Kodarkodexempel visar hur du stöder get-property-frågor.

När du utvecklar ett kodarfilter flyttar du kodningsfunktionen till ett separat filter från ett videoinspelningsfilter. Definiera dina egna privata medier så att grafbyggare kan ansluta kodare och avbildningsfilter korrekt. Om maskinvaran kan hantera icke-kodat innehåll kan du även exponera offentliga medier. Om du implementerar både offentliga och privata medier ska du först lista de privata mediet eftersom det minskar grafens byggtid. för att hitta rätt filter när du skapar ett filterdiagram.

Mer information om hur du använder medier och flera instanser av ett filter (i separata filterdiagram) finns i Medium och Kategorier.